C# 替代';是';具有运行时已知的对象类型

C# 替代';是';具有运行时已知的对象类型,c#,.net,reflection,system.reflection,C#,.net,Reflection,System.reflection,我试图检查某个类型是否是另一个类型的实例。与此简单方法一样,最好的选择是: bool Example(Type instance, Type runtimeKnwownType) { return instance is runtimeKnwownType; } 这是最好的选择,因为is可用于接口,但它不适用于类型,也不适用于常量右操作数。另一个选项是类型。IsSubclassOf(对象)不适用于接口。因此,我的问题是,在这个场景中,is的子项。您可以对两个对象执行GetType: p

我试图检查某个
类型
是否是另一个
类型
的实例。与此简单方法一样,最好的选择是:

bool Example(Type instance, Type runtimeKnwownType) {
    return instance is runtimeKnwownType;
}

这是最好的选择,因为
is
可用于接口,但它不适用于
类型
,也不适用于常量右操作数。另一个选项是
类型。IsSubclassOf(对象)
不适用于接口。因此,我的问题是,在这个场景中,
is
的子项。

您可以对两个对象执行
GetType

public Class1 abc;
public Class2 def;
public void Test()
{
    if (abc.GetType() == def.GetType())
    {

    }
}


在注释之后,您希望检查两种类型的赋值。你能试试吗

Type.IsAssignableFrom(Type c)

如果c和当前类型表示相同的类型,或者 当前类型位于c的继承层次结构中,或者如果当前 类型是c实现的接口,或者如果c是泛型类型 参数和当前类型表示的约束之一 c、 "


这不适用于继承/派生类型though@maccettura非常正确,仅精确匹配。其他检查,如
AssignableFrom
等,需要以不同的方式处理。您能解释一下为什么要这样做吗?我想这可能是一个很好的例子,如果可能的话,你能给我一个代码样本吗?您到底想做什么。@maccettura我正在尝试在wpf中创建类似绑定的东西,并想检查源属性类型和使用者属性类型是否可以从源分配给使用者
public bool Example(Type instance, Type runtimeKnwownType)
{
    return instance == runtimeKnwownType;
}