Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/274.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 可以用动态对象替换静态方法吗?_C#_Dynamic_Localization - Fatal编程技术网

C# 可以用动态对象替换静态方法吗?

C# 可以用动态对象替换静态方法吗?,c#,dynamic,localization,C#,Dynamic,Localization,我想解决的问题是,我必须重建我的应用程序,以防语言文件被更新 我有一个现有的类,它是从ResX文件自动生成的。自动生成的零件如下所示: /// <summary> /// Looks up a localized string similar to OK. /// </summary> public static string MenuOk { get { return ResourceManager.GetString("MenuOk", r

我想解决的问题是,我必须重建我的应用程序,以防语言文件被更新

我有一个现有的类,它是从ResX文件自动生成的。自动生成的零件如下所示:

/// <summary>
///   Looks up a localized string similar to OK.
/// </summary>
public static string MenuOk {
    get {
        return ResourceManager.GetString("MenuOk", resourceCulture);
    }
}
var text = Strings.MenuOk;
从ResourceManager获取密钥。我正在考虑切换到字典来获取字符串,而不是
ResourceManager
。本词典在程序开始时填写


提前感谢您的输入。

因为您将不得不访问这样的词典

var text = myDictionary["MenuOk"];
无论如何,为什么不包装
ResourceManager
,这样就不必每次都提供
resourceCulture

public static string GetString(string key)
{
    return ResourceManager.GetString(key, ResourceCulture);
}

// ...

var text = MyResourceManager.GetString("MenuOk");

您可以使用MEF在运行时动态加载DLL和类。如果你从未使用过它,它可能有点过头了

你可以使用一些反射,但我怀疑这是你想要的方向


我看你的方法没有任何问题。也许您可以让他们实现一个接口,然后简单地交换实现的实例。

那么,您可以创建自己的基于XML的语言文件,并在代码中使用这些文件


通过这种方式,您可以编译二进制文件,只需更改额外的语言文件,但通过这种方式,您必须跟踪多个文件,而不仅仅是二进制文件。

包装ResourceManager是一个很好的主意。谢谢那正是我的想法。