在我們的應用程序中,在Resources.designer.cs
文件中有1000個靜態屬性的用法。例如:用DynamicObject替換靜態資源屬性
Resources.string_to_identify_the_resource
我們也有我們自己的類,它查找資源,而且還可以讓資源從其他組件覆蓋。如果我們有一個客戶想要重命名插件或產品,這非常有用,因爲我們只需要放入一個dll並完成它。該類用於像:
Resources.GetString("string_to_identify_the.resource");
我們希望所有的資源,通過我們自己的資源類中擡起頭來,使他們能夠重寫,我一直負責做這個。我不喜歡所有的代碼並重新考慮因素。
我最初的想法是使用自定義DynamicObject:
public class Resources
{
public static dynamic Dynamic = new StaticResourcesDynamicObject();
class StaticResourcesDynamicObject : DynamicObject
{
public override bool TryGetMember(GetMemberBinder binder, out object result)
{
result = GetString(binder.Name);
return true;
}
}
// Existing code to lookup resources
public static string GetString(string name)
{
...
}
}
所以
Resources.string_to_identify_the_resource
會被簡單地命名爲:
Resources.Dynamic.string_to_identify_the_resource
的主要問題是,很多的資源名稱包含句點(.
),因此它們不匹配靜態屬性。例如Cmd.Too_Much
具有Cmd_Too_Much
的靜態屬性。
我可以嘗試獲取所有不同的可能性,或者其他人是否有解決該問題的方法?