C#: может ли generi c type указать новый (тип) как constrait? - PullRequest
0 голосов
/ 26 февраля 2020

У меня есть этот фрагмент кода под 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, который его использует?

Есть ли способ заставить мой код работать?

Большое спасибо.

...