2011-03-03 23 views
0

http://www.thinkingguy.net/2010/01/localizing-labelfor-in-aspnet-mvc-2.html.NET上的getProperty的.resx基於屬性

我嘗試使用反射來得到一個字符串屬性的RESX文件

var propertyInfo = _resourceType.GetProperty(resourcePropertyName, BindingFlags.Static | BindingFlags.GetField | BindingFlags.NonPublic); 

我有一個資源文件夾中的我的MVC2項目與自動生成一個屬性

public static string Dagrapport_Datum { 
      get { 
       return ResourceManager.GetString("Dagrapport_Datum", resourceCulture); 
      } 
     } 

無論我傳遞給它的getProperty只是停留空.... 任何線索,爲什麼這可能是一個資源文件?

回答

3

您的BindingFlags與該屬性的簽名不匹配。

您需要BindingFlags.Static | BindingFlags.Public,也許BindingFlags.GetProperty。

編輯:最好設置BindingFlags.NonPublic。

因此,GetProperty()搜索所有Static,Public或NonPublic(內部,私有,受保護)屬性。

+0

哇,謝謝你的快速回復。這絕對是訣竅! –

1

此,如果你有你的艾策斯修改設置爲「內部」

var resource = typeof(TestResource).GetProperties(BindingFlags.Static | BindingFlags.NonPublic); 
var property = resource.First(x => x.Name == "SomeProperty"); 

如果將艾策斯修改爲「公共」你可以改變NonPublicPublic而是應該工作。

這也適用於:

var someProperty = typeof (TestResource).GetProperty("SomeProperty", BindingFlags.Static | BindingFlags.NonPublic); 

在這個例子中,我已經有了一個叫資源與TestResource屬性SomeProperty