Type.GetProperty(string)
型がインターフェイスの場合、なぜ基本インターフェイスからプロパティを取得しないのですか? たとえば、次のコードは次のように表示されます。
System.String X
null
System.String X
System.String X
矛盾しているようです:
void Main()
{
Console.WriteLine(typeof(I1).GetProperty("X"));
Console.WriteLine(typeof(I2).GetProperty("X"));
Console.WriteLine(typeof(C1).GetProperty("X"));
Console.WriteLine(typeof(C2).GetProperty("X"));;
}
public interface I1 { string X { get; } }
public interface I2 : I1 { }
public class C1 { public string X { get { return "x"; } } }
public class C2 : C1 { }
編集:コールの答えをサポートするランタイムの別の側面は次のとおりです。
public class C : I2 {
// not allowed: the error is
// 'I2.X' in explicit interface declaration is not a member of interface
string I2.X { get; set; }
// allowed
string I1.X { get; set; }
}