2014-01-14 29 views
0

我有一个问题:比较的typeof类

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

我不能从这里访问类,因为它们来自不同的项目,是假设分离。

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

+0

也许你可以检查一些常见的,项目之间的接口共享? –

回答

2

您可以使用

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

UPDATE:

您可以创建你需要共享类型的一个共同的项目,并引用此项目的任何其他项目。然后下面的工作:

if (this.Parent is YOURINTERFACETYPE) 

假设父对象实现YOURINTERFACETYPE

+1

在我看来,这不是一个好的建议,重构或模糊处理可能会打破它 –

+0

这不是一个推荐的解决方案,但是这对作者很有用。否则,他需要一个单独的Common项目来引用。 – realnero

+0

认为这是目前最好的解决方案。谢谢! – HappySoftwareDeveloper

4

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

给定一个接口是这样的:

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

注意

public interface IDoStuff { } 

如果家长实现它这样你可以检查,当然这种方法要求你在控制实现在'Parent'中找到的实例。

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

+0

“无法从这里访问该类,因为它们来自不同的项目,并且假设它们是分开的。”因此,Interface也将无法访问。 – realnero

+2

@realnero - 当然。但是这两个项目都可以访问第三个包含这种共享接口的通用项目。那就是说,你是否在控制这里的所有项目?如果没有,你当然不能将接口添加到该实现中,并且我的建议不适用于你。 –

+0

稍后没有添加注释吗? :) – realnero