gpt4 book ai didi

c# - typeof(interface).IsAssignableFrom(intptr) 返回 true

转载 作者:太空宇宙 更新时间:2023-11-03 20:03:44 25 4
gpt4 key购买 nike

我需要遍历实现接口(interface)的所有属性,并且我有一个通过 IsAssignableFrom 条件的 IntPtr 属性。

是否有任何其他方法来检查属性是否实现了接口(interface)?

这是遍历属性的方法:

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 是声明属性的类型,不是属性的类型。在您的情况下,DeclaringTypeAircraft 或其基类之一。您应该改用 pi.PropertyType

关于c# - typeof(interface).IsAssignableFrom(intptr) 返回 true,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25359095/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com