C# 比较类的类型

C# 比较类的类型,c#,.net,typeof,C#,.net,Typeof,我有一个问题: Control controlToGetFocus = this; if (this.Parent.GetType() == typeof(...)) 我无法从这里访问该类,因为它们来自不同的项目,并且应该是分开的 有没有什么方法可以让我做到这一点,或者其他方法?我确实尝试了这个.Parent.Name,效果很好,但我的眼睛不喜欢这个解决方案;) 如果您需要检查this.Parent是否是一个特定的实现,您应该使用接口而不是特定的类型。正如你所说,你的项目应该是分开的。但是,项

我有一个问题:

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

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


有没有什么方法可以让我做到这一点,或者其他方法?我确实尝试了
这个.Parent.Name
,效果很好,但我的眼睛不喜欢这个解决方案;)

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

给定这样的接口:

public interface IDoStuff { }
if (this.Parent is IDoStuff) { ... }
您可以检查父级是否按如下方式实现它:

public interface IDoStuff { }
if (this.Parent is IDoStuff) { ... }
注意:这种方法当然要求您控制在“父”中找到的实例的实现


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

如果您需要检查“this.Parent”是否为特定实现,则应使用接口而不是特定类型。正如你所说,你的项目应该是分开的。但是,项目共享公共接口是完全可以的

给定这样的接口:

public interface IDoStuff { }
if (this.Parent is IDoStuff) { ... }
您可以检查父级是否按如下方式实现它:

public interface IDoStuff { }
if (this.Parent is IDoStuff) { ... }
注意:这种方法当然要求您控制在“父”中找到的实例的实现

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

您可以使用

if (this.Parent.GetType().ToString() == "YOURTYPE")
更新:

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

if (this.Parent is YOURINTERFACETYPE)
假设父对象实现了您可以使用的InterfaceType

if (this.Parent.GetType().ToString() == "YOURTYPE")
更新:

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

if (this.Parent is YOURINTERFACETYPE)


假设父对象实现了您的InterfaceType

也许您可以检查一些常见的、项目间共享的接口?也许您可以检查一些常见的、项目间共享的接口?我认为这不是一个好的建议,重构或混淆可能会破坏它。这不是一个推荐的解决方案,但这对作者来说是可行的。否则,他需要一个单独的通用项目作为参考。我认为这是目前最好的解决方案。谢谢@用户2605871很棒,但从长远来看,我添加的更新会让解决方案看起来更好。不要忘记标记答案:)@user2605871-您是否控制了“父”对象的实现?如果不是的话,接口方法是不可行的。在我看来,这不是一个好的建议,重构或模糊处理可能会破坏它。这不是一个推荐的解决方案,但这对作者来说是可行的。否则,他需要一个单独的通用项目作为参考。我认为这是目前最好的解决方案。谢谢@用户2605871很棒,但从长远来看,我添加的更新会让解决方案看起来更好。不要忘记标记答案:)@user2605871-您是否控制了“父”对象的实现?如果不是,接口方法是不可行的。“不能从这里访问该类,因为它们来自不同的项目,并且应该是分开的。”所以接口也将是不可访问的。@realnero-当然。但这两个项目都可以访问第三个包含此类共享接口的公共项目。也就是说,你控制了这里的所有项目吗?如果没有,您肯定无法将接口添加到该实现中,我的建议对您不起作用。以后不是添加了注释吗?:)问问OP,他知道他是否有控制权。为什么要删除你的评论?@realnero-hoho,刚刚意识到我把你的操作弄糊涂了。对不起:)“不能从这里访问那个类,因为它们来自不同的项目,应该是分开的。”所以接口也将是b不可访问的。@realnero-当然。但这两个项目都可以访问第三个包含此类共享接口的公共项目。也就是说,你控制了这里的所有项目吗?如果没有,您肯定无法将接口添加到该实现中,我的建议对您不起作用。以后不是添加了注释吗?:)问问OP,他知道他是否有控制权。你为什么删除了你的评论?@realnero-hoho,刚刚意识到我把你的评论弄糊涂了。对不起:)