我有以下内容:
GenericClass<T> : Class
{
T Results {get; protected set;}
public GenericClass<T> (T results, Int32 id) : base (id)
{
Results=results;
}
public static GenericClass<T> Something (Int32 id)
{
return new GenericClass<T> (i need to pass something like new T?, id);
}
}
更新T可以是类型也可以是值,因此对某些类型使用new()是可以的,但是对于值不是。我想这意味着会重新设计一些课程。
这个想法是如何使用构造函数的?例如,是否可以传递类似于新T的东西(虽然它不应该,因为当时不知道T)或者什么是扭曲以避免传递null?
答案 0 :(得分:3)
这应该有效:
GenericClass<T> : Class where T : new()
{
T Results {get; protected set;}
public GenericClass<T> (T results, Int32 id)
{
Results=results;
}
public GenericClass<T> Something (Int32 id) : this(new T(), id)
{ }
}
答案 1 :(得分:1)
class GenericClass<T> : Class where T : new()
{
public T Results {get; protected set;}
public GenericClass (T results, Int32 id) : base (id)
{
Results=results;
}
public static GenericClass<T> Something (Int32 id)
{
return new GenericClass<T> (new T(), id);
}
}
答案 2 :(得分:0)
如何使用反射?
public static GenericClass<T> Something (Int32 id)
{
return new GenericClass<T> ((T)Activator.CreateInstance(typeof(T)), id);
}