當在接口類型上反映時,我只獲取特定類型的成員,而不是繼承成員。爲什麼繼承接口的成員不能使用反射?
在這個過於簡單化的例子,該程序只打印「名稱」,而不是「ItemNumber」,「名稱」爲我所期望的:
using System;
public interface IBasicItem
{
string ItemNumber { get; set; }
}
public interface IItem : IBasicItem
{
string Name { get; set; }
}
class Program
{
static void Main(string[] args)
{
var type = typeof (IItem);
foreach (var prop in type.GetProperties())
Console.WriteLine(prop.Name);
}
}
這背後的原理是什麼?當我從基礎接口繼承時,我說我的接口的任何實現都必須實現繼承的成員。換句話說,IItem is-a IBasicItem。那麼,爲什麼繼承的成員不會使用反射?
Doh ...今天早上我可以告訴我很困。 +1爲正確的答案。 – 2009-11-23 14:39:13