[c#] 특정 속성을 표시 한 모든 속성 가져 오기

거기에 클래스와 속성이 있습니다. 일부 속성은 속성으로 표시 될 수 있습니다 ( 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);


답변