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
{
[CommandProperty()]
public virtual string Value { get; set; }
}
public class MyClass2 : MyClass
{
public override string Value { get; set; }
}
[AttributeUsage(AttributeTargets.Property, Inherited = true)]
public class CommandPropertyAttribute : Attribute
{
/* ... */
}
PropertyInfo prop = ***The PropertyInfo of MyClass2.Value***;
object[] attrs = prop.GetCustomAttributes(typeofCPA, true);
Attribute at =Attribute.GetCustomAttribute(prop, typeofCPA, true);
if (attrs.Length == 0 && at != null)
{
// Yes this happens.
}
첫 번째 GetCustomAttributes 호출에서 아무런 결과가 나타나지 않는 이유는 무엇입니까?재정의 된 속성의 속성을 가져 오는 동안 다른 동작이 발생합니까?
이 예를 따르는 데 문제가 있습니다. // No는 어디에서 발생합니까? 그리고 어떤 메소드에 'ObsoleteAttribute'가 정의되어 있습니까? –
더 명확히 말하면, 문제는 오버라이드 된 멤버에 정의 된 속성을 찾는 것입니다. 상속 계층 내에서 해당 멤버에 정의 된 특성을 반환하려는 것으로 가정합니다. – Reddog