gpt4 book ai didi

c# - 在运行时检查对象类型兼容性

转载 作者:行者123 更新时间:2023-11-30 20:10:18 24 4
gpt4 key购买 nike

这是一个非常笼统的问题,但我正在做的具体事情很简单,所以我包含了代码。当我在编译时不知道两个对象的类型时,如何检查两个对象之间的类型兼容性?

也就是说,当 SomeType 是编译时已知的类型名称时,我可以执行 if (object is SomeType)GetType() 是不够的,因为它不适用于派生类型。基本上我想说,if (object.IsTypeOfOrIsDerivedFrom(someType)) 这个神奇方法的标志是 IsTypeOfOrIsDerivedFrom(Type type)

这是上下文。

// Return all controls that are (or are derived from) any of a list of Types
public static IEnumerable<Control> FindControls(this Control control, IEnumerable<Type> types, bool recurse)
{
foreach (Control ctl in control.Controls)
{
/// How can I compare the base types of item & ctl?
if (types.Any(item=> .... ))
{
yield return (ctl);
}
if (recurse && ctl.Controls.Count > 0)
{
IEnumerable<Control> subCtl = ctl.FindControls(types,true);
if (subCtl != null)
{
yield return (subCtl);
}
}
}
yield break;
}

最佳答案

您可以使用 Type.IsAssignableFrom 例如

public class Foo { }

public class Bar : Foo { }

...

bool compatible = typeof(Foo).IsAssignableFrom(typeof(Bar));

关于c# - 在运行时检查对象类型兼容性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5273730/

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