2010-08-04 6 views
1

Je souhaite remplacer une méthode de la classe System.Resources.ResourceManager dans mscorlib v4.Substitution de ResourceManager GetResourceFileName

Je souhaite remplacer la méthode GetResourceFileName comme ceci;

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

Le problème est, à instancier une classe ResourceManager je dois utiliser la méthode statique CreateFileBasedResourceManager, qui renvoie une nouvelle instance de la ResourceManager. (parce que j'ai besoin du gestionnaire de ressources basé sur le fichier)

Comment puis-je remplacer cette méthode? J'ai également essayé d'appeler le constructeur privé CreateFileBasedResourceManager appels pour créer l'objet, mais je reçois cette exception (ne peut pas invoquer le constructeur privé avec réflexion?);

[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 

Répondre

2

Créez votre propre fournisseur de ressources et référencez-le dans votre app.config ou web.config. Un exemple peut être trouvé here

+0

Merci pour l'info, après avoir utilisé la classe Activator pour instancier l'objet avec le constructeur privé travaillé ... l'exception de sécurité provenait d'autre chose. – peter