私は抽象的なクラスの例を持っています。別の汎用クラス 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();
}
}