我以前做过这么多次,但是我的记忆让我失望了,我觉得这有点愚蠢.
如何比较两种运行时类型?我假设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)
该==运营商应该做的类型平等检查的伎俩.例如,这传递:
[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)