我有一个抽象类Example。另一个泛型类UsesExample将其用作约束,并带有new()约束。稍后,我创建了Example类的子类ExampleChild,并与泛型类一起使用。但是不知何故,在泛型类中的代码尝试创建新副本时,它调用的是父类中的构造函数,而不是子类中的构造函数。这是为什么?
以下是代码:
abstract class Example {
public Example() {
throw new NotImplementedException ("You must implement it in the subclass!");
}
}
class ExampleChild : Example {
public ExampleChild() {
// here's the code that I want to be invoken
}
}
class UsesExample<T> where T : Example, new() {
public doStuff() {
new T();
}
}
class MainClass {
public static void Main(string[] args) {
UsesExample<ExampleChild> worker = new UsesExample<ExampleChild>();
worker.doStuff();
}
}
: this()
或者: base()
的调用,它会自动调用无参构造函数。 - Guffa