Как я могу создать экземпляр GlobalResourceProvider по умолчанию?

#c# #.net #asp.net #localization #webforms

#c# #.net #asp.net #локализация #веб-формы

Вопрос:

Мне нужно создать пользовательский LocalResourceProvider в ASP.NET . Похоже, для этого мне нужно создать пользовательский ResourcePRoviderFactory. Однако это также означает возврат IResourceProvider из CreateGlobalResourceProvider ( null не работает).

Я не могу найти, что такое фреймворк ResourceProvider по умолчанию, поэтому я могу вернуть его, поэтому мне не нужно создавать свой собственный.

(Бонусные баллы также за LocalResourceProvider по умолчанию, поскольку все, что мне нужно изменить, это VirtualPath, поэтому возможность создать экземпляр по умолчанию, но передать свой собственный проход упростит задачу).

Ответ №1:

Найдено решение. Хотя это не очень приятно:

 // HACK: The default provider is internal, so we have to use reflection to create it, so we can steal it's behaviour.
string typeName = "System.Web.Compilation.ResXResourceProviderFactory, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a";
defaultFactory = (ResourceProviderFactory)Activator.CreateInstance(Type.GetType(typeName));