有什么方法可以快速检查对象是否在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以防万一。
答案 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;