我想从泛型方法中构造一个对象。该对象在其构造函数中使用string
。像这样:
public T GetObject<T>()
{
return new T("Hello");
}
这可能吗?
答案 0 :(得分:11)
是的,但只有在没有编译时检查构造函数是否真的存在的情况下:Activator.CreateInstance
public T GetObject<T>()
{
return (T)Activator.CreateInstance(typeof(T), "Hello");
}
答案 1 :(得分:7)
一种选择是重写它以强制调用者传入工厂方法/ lambda
public T GetObject<T>(Func<string,T> func)
{
return func("Hello");
}
调用网站将被修改为如下所示
GetObject(x => new T(x));
答案 2 :(得分:0)
没有。目前,您不能将参数化构造函数与泛型类型一起使用,因为您无法在其中定义它们。
使用Activator是不一样的 - 我认为不是你问题的答案 - 但你当然可以使用它。