2011-08-30 7 views
4

Attribute.GetCustomAttribute 작동하지 않습니다 :특성을 얻는 방법 속성을 재정의 하시겠습니까?

using System; 

class Program 
{ 
    static void Main() 
    { 
     var p = typeof(MyClass2).GetProperty("Value"); 
     var a = Attribute.GetCustomAttribute(p, typeof(ObsoleteAttribute), true); 
     Console.WriteLine(a != null); 
    } 
} 

public class MyClass 
{ 
    [Obsolete] 
    public virtual string Value { get; set; } 
} 

public class MyClass2 : MyClass 
{ 
    public override string Value { get; set; } 
} 

출력 : 거짓을

이유는 무엇입니까?

+0

속성을 가져올 때 MyClass2를 MyClass로 변경하면 어떻게됩니까? –

+0

이 경우에는 문제가 없습니다. – wizard

답변

4

ObsoleteAttribute에 대한 문서를 보면 AttributeUsageInherited을 false로 설정한다는 것을 알 수 있습니다. 따라서이 속성은 우선하는 구성원에 의해 상속되지 않습니다.

기본 속성을 재정의하고 상속 체인을 작동하는 것으로 판단되면 그 방법으로 속성을 찾을 수 있습니다. 이 종류의 일을하는 것은 다소 엉망입니다.

관련 문제