C#子类返回未知类型(进一步:来自父级)

kae*_*aem 2 c# types return parent

我有接口:

public interface Inx<T>
{
   T Set(Data data);
}
Run Code Online (Sandbox Code Playgroud)

用这个方法简单的类

public class Base
{
   ??? Set(Data data) { ... }
}
Run Code Online (Sandbox Code Playgroud)

和那样的父类:

public class Parent : Base, Inx<Parent>
{
   ...
}
Run Code Online (Sandbox Code Playgroud)

我想从子类中的Set metod返回父类型这可能吗?我需要这样做:

list.Add(new Parent().Set(data));
Run Code Online (Sandbox Code Playgroud)

现在我必须这样做:

T t = new T();
t.Set(data);
list.Add(t);
Run Code Online (Sandbox Code Playgroud)

它有点烦人,我必须多次使用它


抱歉spam好嗯我可以使用类似的东西:

this.GetType().GetConstructor(new System.Type[] { typeof(Data) }).Invoke(new object[] { data })
Run Code Online (Sandbox Code Playgroud)

所以也许好的解决方案是从这个方法返回一个对象; \?

通用接口的通用类似乎是大内存浪费...这个类的beacose函数是相同的只返回类型是不同的

Mar*_*ell 5

你能做到的唯一方法就是制作Basegeneric(Base<T>)并Set返回T- 然后就可以了Parent : Base<Parent>.问题是......怎么会Set知道如何创建T?你可以有where T : new()条款......

这里有用的是你可以将接口实现移动到Base<T>:

public class Base<T> : Inx<T> where T : new()
{
   public T Set(Data data) {
       T t = new T();
       ///
       return t;
   }
}
public class Parent : Base<Parent> { }
Run Code Online (Sandbox Code Playgroud)