Паттерн «Строитель» с Неявным Оператором
Обычно паттерн «Строитель» позволяет вам выполнить сложную логику создания объекта, а потом вызвать метод
Build(), который вернёт нужный вам объект. Например:internal record PersonBuilder
{
internal PersonBuilder()
{
FirstName = "Jane";
LastName = "Doe";
Age = 42;
Height = 169;
}
internal string FirstName { get; init; }
internal string FamilyName { get; init; }
internal int Age { get; init; }
internal int Height { get; init; }
internal Person Build()
=> new Person(FirstName, LastName, Age, Height);
}
Мы можем создать объект Person так:
var person = new PersonBuilder
{
FirstName = "John"
}.Build();
Было бы неплохо, если бы можно было опустить вызов
.Build() в конце. А это возможно. Можно создать неявный оператор для нашего строителя:public static implicit operator
Person(PersonBuilder b) => b.Build();
Теперь можно использовать строитель так:
Person person = new PersonBuilder
{
FirstName = "John"
};
Неявный оператор вызывается, т.к. мы изменили
var на Person при объявлении переменной.Источник: https://josef.codes/bonus-builder-pattern-with-the-implicit-operator-using-c-sharp/