【发布时间】:2017-01-15 22:51:30
【问题描述】:
给定几种类型的类构造函数注入,即;
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 服务或使用存储库的其他组件?
【问题讨论】:
-
为什么您的记录器需要 idataservice?只是问,因为那是一个循环引用.. 讨厌!:(另外,我假设记录器实现 ilogger,可能是错的!
-
您能否详细说明
DataService的目的,我感觉您选择了低效设计。 -
通常,你注入到构造函数,或者注入到需要你注入的任何东西的方法中。
-
@ChrisWatts,啊,好吧。我需要将日志保存到数据库的数据服务。不,它不是循环引用,问题是选择哪个更好。项目中只有一种类型。我知道我可以直接在数据库的记录器中执行此操作,这就是为什么我想知道如何执行此操作。
-
@OrelEraki,当然,我需要为我的存储库提供数据服务。数据服务可以是任何存储连接器。可能这里的命名不合适。无论如何,如果我也想在数据服务中记录某些内容,那么问题的上下文是哪个更好以及如何使用数据库实现日志记录。
标签: c# logging dependency-injection architecture