Есть ли возможность описать статический метод CreateFromBaseObject в классе MyBaseClass, чтобы при вызове этого метода из класса-потомка MyDerivedClass создавался экземпляр MyDerivedClass, но не использовался параметр U?
(Конечно без реализации метода CreateFromBaseObject внутри MyDerivedClass)
public abstract class MyBaseClass<T>
where T : class, new()
{
protected T RealObject = new T();
public void setRealObject(dynamic realObject) { this.RealObject = realObject; }
public static U CreateFromBaseObject<U>(T baseObject) where U : MyBaseClass<T>, new()
{
var t = new U();
t.setRealObject(baseObject);
return t;
}
}
...
public class MyDerivedClass : MyBaseClass<RealDerivedClass>{...}
...
RealDerivedClass realDerivedClass = new RealDerivedClass();
//Приходится так:
MyDerivedClass myRealDerivedClass = MyDerivedClass.CreateFromBaseObject<MyDerivedClass>(realDerivedClass);
//А хочется так:
MyDerivedClass myRealDerivedClass = MyDerivedClass.CreateFromBaseObject(realDerivedClass);