Можно ли создать объект с его внутренним конструктором внутри универсального метода?
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>();
Это вызывает ту же ошибку во время выполнения.