[英]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 + E , H 。 它会将您带到重新共享工具的“ 层次结构”窗口。 它具有您要询问的所有功能。
查看那里的工具栏以获取不同类型的视图。
如果我还记得的话, 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.