我Type
在构造函数中将对象的作为参数传递,但我想将类型限制为仅从特定接口继承的对象。
public MyClass(Type myType);
我知道我可以检查该类型是否继承自方法主体中的接口,如下所示:
if(typeof(IMyInterface).IsAssignableFrom(myType))
但是参数的类型约束可能吗?
我Type
在构造函数中将对象的作为参数传递,但我想将类型限制为仅从特定接口继承的对象。
public MyClass(Type myType);
我知道我可以检查该类型是否继承自方法主体中的接口,如下所示:
if(typeof(IMyInterface).IsAssignableFrom(myType))
但是参数的类型约束可能吗?
你为什么不让你的类通用?在这种情况下,您可以指定您的约束,而不必费心检查参数。
例如
public class MyClass<T>
where T : IMyInterface
{
....
}
因为您显示了在运行时检查类型的代码,所以我假设您想在编译时强制执行类型约束:
public class MyClass<T> where T : IMyInterface {
public MyClass(T myArg) {
Type myType = typeof(T);
Type argType = myArg.GetType();
Debug.Assert(myType == argType, "types must be the same!");
}
}
您不能在构造函数中执行此操作,但可以在类声明中执行此操作。