我一直在用PRISM构建应用程序,这个应用程序在未来几年中将会很多,所以它被设置为模块化并且考虑到IoC。 在这个应用程序中,我正在为日志记录机制实现Nlog。PRISM解决与使用类型解决的工厂的接口
因为我不想在我的整个应用程序添加到NLOG参考我已经创建了一个接口,用于记录
public interface ILog
{
void Log(LogLevel loglevel, string format);
void Log(LogLevel loglevel, string format, params object[] args);
void Log(LogLevel loglevel, Exception exc, string format, params object[] args);
}
我也创建了一个接口,为工厂
public interface ILogFactory
{
ILog Initialize(Type type);
}
工厂接受一个Type参数,该参数可用于为该类创建特定的记录器。现在来挑战我要使用ILog的问题我想要一个使用目标类型类的实例。
public class ClassA
{
private ILog Logger { get; set;}
public ClassA(Ilog logger)
{
Logger = logger;
}
}
我如何电线我ILogFactory到PRISM等使用ILOG一类是采用ILogFactory.Initialize(类型类型),在这种情况下的typeof(ClassA的)的决心。
您可以简单地将ILogFactory作为依赖注入到ClassA中。类a只是使用恰好是ILog实现的工厂实例。 – Xeun
我目前正在使用它,它的工作原理,但只需要有一个Ilog使得类更简单 –
是的,我明白你想达到什么目的,但它不会那样工作。 您的课程取决于Factory sicne,它不知道如何创建ILogger,但Factory确实如此 - 因此Factory是您班级的依赖项。我认为你只是在解决这个问题。让班级依靠工厂,你很好走 – Xeun