typeof(interface).IsAssignableFrom(intptr) returns true
本文关键字:returns true intptr IsAssignableFrom typeof interface | 更新日期: 2023-09-27 18:18:21
我需要遍历实现接口的所有属性,并且我有一个传递IsAssignableFrom条件的IntPtr属性。
是否有其他方法来检查一个属性是否实现了接口?
这个方法遍历属性:
protected void SetOwner()
{
IEnumerable<PropertyInfo> sourceProperties = this.GetType().GetProperties();
foreach (PropertyInfo pi in sourceProperties)
{
if (pi.Name != "Owner" && pi.DeclaringType.GetInterface("IOwnerSystem") != null)
//i tried this too: typeof(IOwnerSystem).IsAssignableFrom(pi.DeclaringType))
{
IOwnerSystem systm = (IOwnerSystem)pi.GetValue(this, null);
if (systm != null)
{
systm.Owner = this;
}
}
}
}
,这是类:
public abstract class Aircraft : OwnerSystem
{
//a bunch of properties...
public abstract IntPtr VideoWindow { get; }
}
pi.DeclaringType
是声明属性的类型,不是属性的类型。在您的例子中,DeclaringType
是Aircraft
或它的一个基类。您应该使用pi.PropertyType
。