比较类型

时间:2014-01-14 12:12:12

标签: c# .net typeof

我有一个问题:

Control controlToGetFocus = this;
if (this.Parent.GetType() == typeof(...))

我无法从这里访问该类,因为它们来自不同的项目,并且假设是分开的。

我有什么方法可以做到这一点,也许还有其他方法吗?我确实尝试过this.Parent.Name但效果很好,但我的眼睛不喜欢那个解决方案;)

2 个答案:

答案 0 :(得分:4)

如果你需要检查'this.Parent'是否是一个特定的实现,你应该使用接口而不是特定的类型。如你所说,你的项目应该是分开的。但项目共享通用接口是相当不错的。

给定这样的界面:

public interface IDoStuff { }

您可以检查Parent是否像这样实现它:

if (this.Parent is IDoStuff) { ... }

注意:这种方法当然要求您控制'父母'中实例的实现。

NOTE2 :为了澄清,通用接口必须放在两个项目都可以引用的单独项目/程序集中。

答案 1 :(得分:2)

您可以使用

if (this.Parent.GetType().ToString() == "YOURTYPE")

更新:

您可以使用需要共享的类型创建Common项目,并从任何其他项目引用此项目。然后以下工作:

if (this.Parent is YOURINTERFACETYPE)

假设Parent对象实现了YOURINTERFACETYPE