В настоящее время я участвую в попытке создать метод, который будет принимать X число объектов, реализующих определенный интерфейс. Однако для удобства чтения я не хотел использовать новое ключевое слово для создания объекта.Создание объекта без использования нового или активированного или скомпилированного lambdas
Например, мой код будет выглядеть так:
var builder = new MyBuilder();
builder.Build(Value("Andre", "Like", "Test"),
Value("Bob", "and", "Andre"));
То есть то, что я ищу. Я стараюсь, чтобы избежать необходимости делать:
var builder = new MyBuilder();
builder.Build(new Value("Andre", "Like", "Test"),
new Value("Bob", "and", "Andre"));
или даже
var builder = new MyBuilder();
builder.Build(Value.Create("Andre", "Like", "Test"),
Value.Create("Bob", "and", "Andre"));
Я понимаю, что в данном примере это не кажется какой-либо причине, чтобы сделать то, что я хочу, но, глядя мимо примера есть ли способ сделать то, что я хочу? Возможно, используя создание структуры и использование перегрузки оператора?
Значение в этом случае может быть классом или структурой, если они реализуют некоторый интерфейс, который принимает метод Build.
Если это слишком расплывчато, я могу попытаться дать лучшее описание.
Возможно, сделать функцию Create членом класса, содержащего класс (или его базы)? – PMF
@PMF Я надеюсь использовать MyBuilder во многих местах. Может ли это сделать еще один вариант? – dreza
Первый пример выглядит как вызов метода. Так почему бы вам не послушать то, что написал PMF, и не создавать метод *, который затем может вызывать 'Builder', создавать' new' и т. Д. Перемещение повторяемого кода в частный метод класса очень полезно. – Sinatr