如何比较两个System.Types?

Wat*_* v2 2 c#

我以前做过这么多次,但是我的记忆让我失望了,我觉得这有点愚蠢.

如何比较两种运行时类型?我假设System.Type不会覆盖==运算符,因此运算符执行引用相等性检查.

我想做一个价值平等.喜欢:

someObject.GetType() == GetTypeFromSomeAssemblyUsingReflection(
                                                "Namespace.TypeName",
                                                objAssemblyToGetTheTypeFrom);
Run Code Online (Sandbox Code Playgroud)

我可以使用,IsAssignableFrom()但这不会是我想要做的准确,因为它会扩大范围.我想把这些类型等同于我所做的:

if obj is Cat // where Cat is the name of a class
Run Code Online (Sandbox Code Playgroud)

要么

if ( (obj as Cat) != null )
Run Code Online (Sandbox Code Playgroud)

Ada*_*ear 6

==运营商应该做的类型平等检查的伎俩.例如,这传递:

[Test]
public void TypeEquality()
{
    var monkey = new Monkey();
    var areEqual = (monkey.GetType() == typeof(Monkey));
    Assert.That(areEqual, Is.True);
}
Run Code Online (Sandbox Code Playgroud)