我试图做到以下几点:为什么我不能强制派生类具有无参数构造函数?
class Program
{
static void Main(string[] args)
{
foo<baz> fooObject = new foo<baz>();
AnotherClass<baz> _baz = new AnotherClass<baz>();
_baz.testMethod(fooObject);
}
}
public class AnotherClass<T> where T : bar
{
public void testMethod(foo<T> dummy)
{
foobar = dummy;
}
private foo<T> foobar = null;
}
public class foo<T> where T : bar, new()
{
public foo()
{
_t = new T();
}
private T _t;
}
public abstract class bar
{
public abstract void someMethod();
// Some implementation
}
public class baz : bar
{
public override void someMethod()
{
//Implementation
}
}
我得到一个错误解释,“T”必须是一个非抽象类有一个公共的无参数的构造函数,以便在将它用作参数“T”泛型类型或方法。我完全理解为什么必须这样做,也明白我可以传递一个类型为'T'的预初始化对象作为构造函数参数,以避免“新”出现,但是有没有办法解决这个问题?任何方式来强制派生从'酒吧'提供无参数构造函数的类?
固定 - 我错过了AnotherClass()上的new()约束。
谢谢,这似乎已经修好了! – 2010-04-16 21:49:37