次のクラス構造が与えられます。
public class A{
[MyAttribute1]
public string field;
}
public class B : A{
[MyAttribute2]
[MyAttribute3]
public string field;
}
リフレクションにより、フィールドに属性「MyAttribute2」があるかどうかを調べようとしています。しかし、次の出力が得られます。
foreach (FieldInfo field in TypeOfB.GetFields(BindingFlags.Public | BindingFlags.Instance))
{
Console.Write(field.DeclaringType);
Console.Write(" : ");
Console.Write(field.GetCustomAttributes(false).Length);
Console.Write("\n");
}
//Output:
A.field : 1
B.field : 2
予想される出力は次のとおりです。
B.field : 3
今質問です。「フィールド」が2回取得され、結合されない理由を説明できる人はいますか? そして何よりも、私がどのようにそれを正しく行っているかを誰が教えてくれますか?