Код: Выделить всё
services.AddSingleton();
services.AddSingleton();
services.AddSingleton();
public class FileDataWriter : IDataWriter {}
public class NameAnonymiser (IDataWriter dataWriter) : IAnonymiser {}
public class AddressFormatter (IAnonymiser anonymiser) : IFormatter {}
public class CustomerFileController (IFormatter formatter) : ControllerBase {}
Однако мне нужно представить CustomerDatabaseController, который использует те же зависимости, за исключением того, что для dataWriter нам нужно писать в базу данных вместо этого:
Код: Выделить всё
public class DatabaseDataWriter : IDataWriter {}
public class CustomerDatabaseController (IFormatter formatter) : ControllerBase {}
Код: Выделить всё
new CustomerFileController(
formatter: new AddressFormatter(
anonymiser: new NameAnonymiser(
dataWriter: new FileDataWriter())))
new CustomerDatabaseController(
formatter: new AddressFormatter(
anonymiser: new NameAnonymiser(
dataWriter: new DatabaseDataWriter())))
Я с радостью переработаю сервис регистрации, но мне бы очень хотелось избежать необходимости передавать такой параметр, как UseFileWriter или UseDatabaseWriter, от контроллеров через различных поставщиков, чтобы они наконец выбрали правильный экземпляр IDataWriter.