在c#中测试对象是否实现给定接口的最简单方法是什么?(回答这个问题 在Java中)


当前回答

我使用

断言。(myObject是ImyInterface);

在我的单元测试中测试myObject是一个实现了我的接口ImyInterface的对象。

其他回答

如果您在编译时就知道接口类型,并且拥有正在测试的类型的实例,那么使用is或作为操作符是正确的方法。其他人似乎没有提到的是类型。IsAssignableFrom:

if( typeof(IMyInterface).IsAssignableFrom(someOtherType) )
{
}

我认为这比查看GetInterfaces返回的数组要简洁得多,而且也具有适用于类的优点。

if (object is IBlah)

or

IBlah myTest = originalObject as IBlah

if (myTest != null)

例如:

if (obj is IMyInterface) {}

本课程:

检查typeof(MyClass). getinterfaces()是否包含该接口。

这应该可以工作:

MyInstace.GetType().GetInterfaces();

但也很好:

if (obj is IMyInterface)

甚至(不是很优雅):

if (obj.GetType() == typeof(IMyInterface))

我使用

断言。(myObject是ImyInterface);

在我的单元测试中测试myObject是一个实现了我的接口ImyInterface的对象。