У меня есть этот фрагмент кода под vs2017 и .netstandard2.0 csproj:
public class Foo
{
public Foo(int i)
{
_i = i;
}
private int _i;
}
public class Bar<T>
where T : Foo, new(), new(int) // error
{
public T Create()
{
return new T(8); // error
}
}
Он не компилируется, я погуглил и обнаружил, что добавление этого нового (int) должно работать, но на самом деле не «т. Как заставить это работать? Некоторые решения из inte rnet включают создание очень сложного интерфейса + фабричные методы, но мой запрос на использование такой же простой, как этот, действительно ли нужно использовать интерфейс + фабричный метод для создания экземпляра "Foo" в общем c типа Bar, который его использует?
Есть ли способ заставить мой код работать?
Большое спасибо.