Gar*_*son 5 c# generics factory
也许这是一个简单的 C# 新手问题,但就这样吧 — 这将是我与其他问题的一次全新突破,这些问题非常困难,以至于没有人知道答案。:)
假设我有一个 C# 泛型类型:
Thing<T>
Run Code Online (Sandbox Code Playgroud)
假设我想使用静态工厂方法来制作一个东西。在 Java 中,这没有问题:
public static <T> Thing<T> createThing()
{
return flag ? new Thing<Integer>(5) : new Thing<String>("hello");
}
Run Code Online (Sandbox Code Playgroud)
我如何在 C# 中执行此操作?谢谢。
如果您想使用许多不同的模板参数之一返回模板化类的实例,一种方法是使用抽象基(或接口):
abstract class UntypedThing { }
class Thing<T> : UntypedThing
{
public Thing(T t) { }
}
class Foo
{
public static UntypedThing createThing(bool flag)
{
if (flag)
return new Thing<int>(5);
else return new Thing<String>("hello");
}
}
Run Code Online (Sandbox Code Playgroud)
该类UntypedThing将包含尽可能多的不依赖于模板类型的代码。理想情况下,该类Thing仅包含依赖于模板类型的代码。工厂类Foo总是返回前者。