在我的Silverlight 4应用程序,我开始创建和使用一些仿制药,现在我偶然发现了以下问题的方法:重写返回一个泛型类
在非通用类,我有一个抽象的方法,即返回一个通用类:
public abstract class DTO_Base()
{
public abstract ServiceModelBase<ServiceNodeBase> CreateBusinessObject();
}
通用类以下述方式定义:
public abstract class ServiceModelBase<RootNodeType> where RootNodeType : ServiceNodeBase
自然地,从DTO_Base派生类将有重写的Cr eateBusinessObject方法:
public class DTO_Editor : DTO_Base
{
public override ServiceModelBase<ServiceNodeBase> CreateBusinessObject()
{
// the object to return have to be of type ServiceModelEditor
// which is derived from ServiceModelBase<ServiceNodeEditor>
// public class ServiceModelEditor : ServiceModelBase<ServiceNodeEditor>
// ServiceNodeEditor is derived from ServiceNodeBase
// public class ServiceNodeEditor : ServiceNodeBase
ServiceModelEditor target = new ServiceModelEditor()
...
Functions to populate the 'target'
...
return target;
}
}
该行return target;会导致错误,指出不可能将ServiceModelEditor
类型隐式转换为ServiceModelBase<ServiceNodeBase>
。此外,通过目标显式转换为ServiceModelBase<ServiceNodeBase>
不起作用。
我该如何执行这个方法才能工作?
非常感谢,这个作品!即使没有界面,那么,您创建的界面是否能够保护我免受以后的麻烦? – Aaginor