您对什么类型感兴趣?方法/属性/事件等的返回类型?
如果是这样,我认为里面没有什么MemberInfo
为了让你直接得到它 - 你需要投射和使用MethodInfo.ReturnType
, PropertyInfo.PropertyType
, FieldInfo.FieldType
, EventInfo.EventHandlerType
以及其他我已经忘记的。 (请记住,类型本身可以是成员。不确定您想用它们做什么!)
编辑:如果您对特定类型是否代表 MyType 或某个子类感兴趣,请使用Type.IsAssignableFrom http://msdn.microsoft.com/en-us/library/system.type.isassignablefrom.aspx:
if (typeof(MyType).IsAssignableFrom(type))
编辑:现在我们知道您想要属性,这很简单 - 使用 GetProperties 而不是 GetMembers。我喜欢用 LINQ 进行反射:
var query = from type in assembly.GetTypes()
from property in type.GetProperties()
where typeof(MyType).IsAssignableFrom(property.PropertyType)
select new { Type=type, Property=property };
foreach (var entry in query)
{
Console.WriteLine(entry);
}
如果您不喜欢 LINQ:
foreach (Type t in a.GetTypes())
foreach (PropertyInfo pi in t.GetProperties())
if (typeof(MyType).IsAssignableFrom(pi.PropertyType))
Console.WriteLine("Found a property that is MyType");
请注意,您可能想要指定绑定标志来获取非公共属性等。