繁体   English   中英

检查对象是否实现接口

[英]Check if an object implements an interface

有什么方法可以快速检查对象是否在Visual Studio中实现了特定的接口?

例:

interface IFirstInterface : ISecondInterface
{
}

interface ISecondInterface
{
    void DoStuff();
}

实现方式:

class MyClass : IFirstInterface
{
    public void DoStuff()
    {
        // ISecondInterface implementation
    }
}

我的代码:

var instance = new MyClass();

在编写My Code时 ,最好快速检查一下MyClass是否实现ISecondInterface 这可能吗?

注意:我不是在谈论通过代码-仅通过Visual Studio UI来做到这一点。 我也使用Resharper以防万一。

Control + EH 它会将您带到重新共享工具的“ 层次结构”窗口。 它具有您要询问的所有功能。

查看那里的工具栏以获取不同类型的视图。

如果我还记得的话, Productivity Power Tools可以让您做到这一点,如此处所示:类实现了哪些接口? 因为我不使用它,所以不确定是否需要重新共享。

另外,对象浏览器应该让您看到这一点。

您可以通过按Ctrl+U (转到基本符号,R#)进行检查。 如果该类具有多个基本符号,则R#将显示一个包含所有基本符号的窗口。

这张支票看起来如何? 显示工具提示?

您可以这样写:

 ISecondInterface instance = new MyClass();

如果未实现该接口,则不会编译/显示错误帮助。

或者,如果您需要实例的类型为MyClass

 void AssureItImplements<T>(T dummy){};

 ...
 var instance = new MyClass();
 AssureItImplements<ISecondInterface>(instance);

这些是您可以在代码中执行此操作的方式,以防万一其他人发现它有用。

 var implementsInterface1 = typeof(ISecondInterface).IsAssignableFrom(instance.GetType());
 var implementsInterface2 = instance as ISecondInterface != null;
 var implementsInterface3 = instance is ISecondInterface;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM