我有一个问题:比较的typeof类
Control controlToGetFocus = this;
if (this.Parent.GetType() == typeof(...))
我不能从这里访问类,因为它们来自不同的项目,是假设分离。
有什么办法可以做到这一点,也许有其他的方法?我确实尝试了this.Parent.Name
,但是我的眼睛不喜欢那个解决方案;)
我有一个问题:比较的typeof类
Control controlToGetFocus = this;
if (this.Parent.GetType() == typeof(...))
我不能从这里访问类,因为它们来自不同的项目,是假设分离。
有什么办法可以做到这一点,也许有其他的方法?我确实尝试了this.Parent.Name
,但是我的眼睛不喜欢那个解决方案;)
您可以使用
if (this.Parent.GetType().ToString() == "YOURTYPE")
UPDATE:
您可以创建你需要共享类型的一个共同的项目,并引用此项目的任何其他项目。然后下面的工作:
if (this.Parent is YOURINTERFACETYPE)
假设父对象实现YOURINTERFACETYPE
在我看来,这不是一个好的建议,重构或模糊处理可能会打破它 –
这不是一个推荐的解决方案,但是这对作者很有用。否则,他需要一个单独的Common项目来引用。 – realnero
认为这是目前最好的解决方案。谢谢! – HappySoftwareDeveloper
如果你需要检查'this.Parent'是否是一个特定的实现,你应该使用接口而不是特定的类型。正如你所说,你的项目应该是分开的。但项目共享通用接口还是可以的。
给定一个接口是这样的:
if (this.Parent is IDoStuff) { ... }
注意:
public interface IDoStuff { }
如果家长实现它这样你可以检查,当然这种方法要求你在控制实现在'Parent'中找到的实例。
NOTE2:为了澄清,通用接口必须放置在一个单独的项目/程序集中,两个项目都可以参考。
也许你可以检查一些常见的,项目之间的接口共享? –