【发布时间】:2015-07-09 11:20:52
【问题描述】:
我认为这个例子非常简单,展示了我想要实现的目标:
public class A : A<object>
{
// public static A GetInstance() => new A();
// I can't do this, because cannot override static methods
}
public class A<T>
{
public static A<T> GetInstance() => new A<T>();
// public static A GetInstance() => new A();
// can't do this, because it says that the method is already defined
}
我基本上希望能够以两种方式使用方法GetInstance:
- 指定类型
T:A<T>.GetInstance()或A.GetInstance<T>()(哪个都无所谓) - 应该返回类型A<T> - 不指定此类型:
A.GetInstance()- 应返回类型A。
我怎样才能做到这一点?
【问题讨论】:
-
严格来说,这不是generic method,而是属于泛型类的非泛型方法。
-
你在试用abstract factory pattern吗?
-
@YuvalItzchakov 嗯,不完全是。我正在为内部错误构建一个简单的系统(收集执行操作期间发生的数据)。因此,如果我只想知道操作是否成功或有任何错误,我会返回 Result.Failed(Error.Something);但如果我还希望能够返回一些特定的数据,我会做 Result.Success
("hello");
标签: c# class inheritance