检查对象是否实现了接口

时间:2014-04-29 10:41:16

标签: c# visual-studio visual-studio-2013 resharper

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

示例:

interface IFirstInterface : ISecondInterface
{
}

interface ISecondInterface
{
    void DoStuff();
}

实施

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

我的代码:

var instance = new MyClass();

在编写我的代码时,最好快速检查MyClass是否实现ISecondInterface。这可能吗?

注意:我不是在谈论通过代码执行此操作 - 只是通过Visual Studio UI。我也在使用Resharper以防万一。

4 个答案:

答案 0 :(得分:3)

Control + E H 。它会带你到Hierarchies resharper的窗口。它具有您所询问的所有功能。

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

答案 1 :(得分:1)

如果我记得,Productivity Power Tools允许你这样做What interfaces are implemented by a class?不确定resharper,因为我不使用它。

此外,对象浏览器应该让你看到这个。

答案 2 :(得分:1)

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

答案 3 :(得分:0)

这张支票怎么样?显示工具提示?

你可以写:

 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;