[英]Assigning interface instance to a class that implements that interface
我有各种实现IActiveRecord的类。
我想要一种方法,可以传入新创建的类,然后将ActiveRecord分配给传入的类的类型。
我已经尝试了下面的方法,但是由于某种原因它没有被编译。
有任何想法吗?
private void AddRecord<T>() where T : class, new()
{
IActiveRecord ActiveRecord = (IActiveRecord)T;
}
您的问题尚不清楚,但是如果我正确理解您要做什么,则只需where T : IActiveRecord
添加约束。 那你可以说
void AddRecord<T>() where T : IActiveRecord, new() {
IActiveRecord activeRecord = new T();
// more stuff
}
关于你的线
IActiveRecord ActiveRecord = (IActiveRecord)T;
这是不合法的。 T
是类型参数,而不是您可以强制转换的表达式。
在您显示的方法中,您没有传入某种类型的实例吗? 我不太了解您要达到的目标。
您要这样做吗?
private void AddRecord<T>() where T : IActiveRecord, new()
{
IActiveRecord a = new T();
}
?
看起来您想将泛型类型限制为IActiveRecord
类型,则不需要IActiveRecord
:
private void AddRecord<T>() where T : IActiveRecord, new()
{
IActiveRecord a = new T();
}
我认为您想通过使用以下方法来限制您的方法:
private void AddRecord<T>() where T : IActiveRecord, new()
否则,我可能不清楚您的问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.