Възможно ли е да се конструира обект с неговия вътрешен конструктор в рамките на общ метод?
public abstract class FooBase { }
public class Foo : FooBase {
internal Foo() { }
}
public static class FooFactory {
public static TFooResult CreateFoo<TFooResult>()
where TFooResult : FooBase, new() {
return new TFooResult();
}
}
FooFactory
се намира в същата сборка като Foo
. Класовете извикват фабричния метод по следния начин:
var foo = FooFactory.CreateFoo<Foo>();
Те получават грешката по време на компилиране:
„Foo“ трябва да е неабстрактен тип с публичен конструктор без параметри, за да се използва като параметър „TFooType“ в общия тип или метод „FooFactory.CreateFoo()“
Има ли някакъв начин да се заобиколи това?
Опитах също:
Activator.CreateInstance<TFooResult>();
Това предизвиква същата грешка по време на изпълнение.