Sma*_*ery 8 c# generics constructor
我想从泛型方法中构造一个对象.该对象采用string
其构造函数.像这样的东西:
public T GetObject<T>()
{
return new T("Hello");
}
Run Code Online (Sandbox Code Playgroud)
这可能吗?
dtb*_*dtb 11
是的,但只是在没有编译时检查构造函数是否真的存在:Activator.CreateInstance
public T GetObject<T>()
{
return (T)Activator.CreateInstance(typeof(T), "Hello");
}
Run Code Online (Sandbox Code Playgroud)
一种选择是重写它以强制调用者传入工厂方法/ lambda
public T GetObject<T>(Func<string,T> func)
{
return func("Hello");
}
Run Code Online (Sandbox Code Playgroud)
呼叫站点将被修改为如下所示
GetObject(x => new T(x));
Run Code Online (Sandbox Code Playgroud)