в своем приложении Silverlight 4 я начал создавать и использовать некоторые шаблоны и теперь наткнулся на следующую проблему:
В неуниверсальном классе у меня есть абстрактный метод, который возвращает универсальный класс:
public abstract class DTO_Base()
{
public abstract ServiceModelBase<ServiceNodeBase> CreateBusinessObject();
}
Общий класс определяется следующим образом:
public abstract class ServiceModelBase<RootNodeType> where RootNodeType : ServiceNodeBase
Естественно, из производных классов DTO_Base придется переопределить метод CreateBusinessObject:
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>
не работает.
Как мне реализовать этот метод для работы?