2010-08-04 78 views
1

我想重寫mscorlib v4中System.Resources.ResourceManager類中的方法。ResourceManager覆蓋GetResourceFileName

我想重寫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 

回答

2

創建您自己的資源提供程序並在您的app.config或web.config中引用它。一個例子可以發現here

+0

感謝您的信息,畢竟使用Activator類instanciate與私有構造函數工作的對象... securityexception是從別的東西。 – peter 2010-08-04 19:26:57