【发布时间】:2012-07-24 11:06:30
【问题描述】:
我正在寻找一种在下面定义“MethodA”的方法,以便它返回一个类定义(System.Type),其中所述类型的一个实例实现了“InterfaceB”
interface IMyInterface
{
TType MethodA<TType, TInterface>()
: where TType : System.Type
: where [instanceOf(TType)] : TInterface
}
(注意:instanceOf 不是真实的,当然……)
我怀疑在编译时不可能得到这种验证。我希望有人能证明我错了。
提前感谢您的任何指导。
编辑:我已经更新了这个,希望更具体地返回一个 System.Type,后面的代码可以执行它:
var classType = myInterface.MethodA<(something, ISomeInterface)>();
ISomeInterface = new classType(); //--Assuming default constructor
我还没有真正专注于这部分,只是对我的主要问题的理论结构更加好奇。
【问题讨论】:
-
将返回类型改为
TInterface -
您是在使用“类型”来表示
System.Type,还是表示您已定义的某种类型?在前一种情况下,由于显而易见的原因,您尝试做的事情是不可能的,而且您几乎肯定不应该从System.Type派生。 -
是的,我的意思是 System.Type。我正在尝试查看是否可以获得实现 TInterface 的东西的类定义,稍后我将对其进行“更新”。我试图避免用这种特殊的方法来更新它。
标签: c# generics types interface