Правильно реализуйте интерфейс ILoggerC#

Место общения программистов C#
Ответить
Anonymous
 Правильно реализуйте интерфейс ILogger

Сообщение Anonymous »

Учитывая несколько типов внедрения конструктора класса, т.е.;

Код: Выделить всё

public class DataService :IDataService
{
public DataService(ILogger logger) { ... }
}
и

Код: Выделить всё

public class Logger
{
public Logger(IDataService service) { ... }
}
или мне следует сделать это вместо этого;

Код: Выделить всё

public class DataService : IDataService, ILogger, IDisposable
{
public DataService() { ... }
}
Однако на самом деле мне не нравится делать это для всех классов репозитория или других классов, которым одновременно требуются службы данных и ведение журнала;

Код: Выделить всё

public class SomeRepository : IRepostiory
{
public SomeRepository (IDataService service, ILogger logger) { ... }
}
Меня устраивает эта модель;

Код: Выделить всё

public interface IRepository : ILogger { ... }
или,

Код: Выделить всё

public interface IDataService : ILogger { ... }
Какой из вариантов дизайна предпочтительнее? Кроме того, как нам определить, хотим ли мы регистрировать процесс службы данных и в то же время мы также хотим регистрировать другие компоненты, которые внедряют службы ILogger или используют репозиторий?

Подробнее здесь: https://stackoverflow.com/questions/416 ... -right-way
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»