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函数是相同的只返回类型是不同的
你能做到的唯一方法就是制作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)
| 归档时间: |
|
| 查看次数: |
1958 次 |
| 最近记录: |