有什么办法可以确定一个对象是否完全一个类而不是派生的那个?
例如:
class A : X { }
class B : A { }
我可以这样做:
bool isExactlyA(X obj)
{
return (obj is A) && !(obj is B);
}
当然,如果有更多A
的派生类,我必须添加和条件。
答案 0 :(得分:10)
概括窃笑的回答:
public static bool IsExactly<T>(this object obj) where T : class
{
return obj != null && obj.GetType() == typeof(T);
}
现在你可以说
if (foo.IsExactly<Frob>()) ...
警告:明智地使用对象的扩展方法。根据您使用此技术的广泛程度,这可能是不合理的。
答案 1 :(得分:5)
在您的具体实例中:
bool isExactlyA(X obj)
{
return obj.GetType() == typeof(A);
}
答案 2 :(得分:2)
我明白了......
control.GetType() == typeof(Label)
答案 3 :(得分:0)