ResourceManager переопределить GetResourceFileName - PullRequest
1 голос
/ 04 августа 2010

Я хочу переопределить метод в классе System.Resources.ResourceManager в mscorlib v4.

Я хочу переопределить метод GetResourceFileName следующим образом;

    protected override string GetResourceFileName(CultureInfo culture) {
        string resourceFileName = base.GetResourceFileName(culture);
        return resourceFileName.Replace(".resources", ".resx");
    }

Проблема в том,чтобы создать экземпляр класса ResourceManager, я должен использовать статический метод CreateFileBasedResourceManager, который возвращает новый экземпляр ResourceManager.(потому что мне нужен файловый менеджер ресурсов)

Как мне переопределить этот метод?Я также пытался вызвать закрытый конструктор, вызовы CreateFileBasedResourceManager для создания объекта, но я получаю это исключение (не могу вызвать закрытый конструктор с отражением?);

    [SecurityException: Request failed.]
  System.RuntimeMethodHandle.PerformSecurityCheck(Object obj, RuntimeMethodHandleInternal method, RuntimeType parent, UInt32 invocationFlags) +0
   System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture, Boolean skipVisibilityChecks) +323
   System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture) +38
   System.Reflection.MethodBase.Invoke(Object obj, Object[] parameters) +35
   System.Xml.Xsl.XsltOld.FuncExtension.Invoke(XsltContext xsltContext, Object[] args, XPathNavigator docContext) +164
   MS.Internal.Xml.XPath.FunctionQuery.Evaluate(XPathNodeIterator nodeIterator) +430

1 Ответ

2 голосов
/ 04 августа 2010

Создайте свой собственный поставщик ресурсов и укажите его в файле app.config или web.config.Пример можно найти здесь

...