거기에 클래스와 속성이 있습니다. 일부 속성은 속성으로 표시 될 수 있습니다 ( LocalizedDisplayName
에서 상 속됨 DisplayNameAttribute
). 이것은 클래스의 모든 속성을 얻는 방법입니다.
private void FillAttribute()
{
Type type = typeof (NormDoc);
PropertyInfo[] propertyInfos = type.GetProperties();
foreach (var propertyInfo in propertyInfos)
{
...
}
}
목록 상자 LocalizedDisplayName
에 속성 값 을 표시 하고 표시 하는 목록 상자에 클래스의 속성을 추가하고 싶습니다 . 어떻게 할 수 있습니까?
편집
이것은 LocalizedDisplayNameAttribute입니다.
public class LocalizedDisplayNameAttribute : DisplayNameAttribute
{
public LocalizedDisplayNameAttribute(string resourceId)
: base(GetMessageFromResource(resourceId))
{ }
private static string GetMessageFromResource(string resourceId)
{
var test =Thread.CurrentThread.CurrentCulture;
ResourceManager manager = new ResourceManager("EArchive.Data.Resources.DataResource", Assembly.GetExecutingAssembly());
return manager.GetString(resourceId);
}
}
리소스 파일에서 문자열을 얻고 싶습니다. 감사.
답변
사용하는 것이 가장 쉽습니다 IsDefined
.
var properties = type.GetProperties()
.Where(prop => prop.IsDefined(typeof(LocalizedDisplayNameAttribute), false));
값 자체를 얻으려면 다음을 사용합니다.
var attributes = (LocalizedDisplayNameAttribute[])
prop.GetCustomAttributes(typeof(LocalizedDisplayNameAttribute), false);