C# StructureMap覆盖默认记录器实例
我有两个项目C# StructureMap覆盖默认记录器实例,c#,components,structuremap,C#,Components,Structuremap,我有两个项目 应用程序(WindosForms仅用作启动组件的UI) 组件 组件具有我通过StructureMap(注册表)注入的所有接口和默认实现。 在这个项目中,我为所有类(Log2Console)引入了一个日志和默认实现的接口,并向StructureMap注册 我需要的是,如果有人想使用自己的UI应用程序并删除默认应用程序,我希望组件DLL的用户可以用his覆盖默认的Log2Console,前提是hi实现his(例如,如果他在自己的项目中实现接口并通过StructureMap注册,则Log
对不起,我的英语不好 实现这一点的方法是提供一个默认构造函数,该构造函数调用具有特定实现的另一个构造函数:
public interface ILogger
{
void Log(string text);
}
public class ConsoleLogger
{
public void Log(string text) { Console.WriteLine(text); }
}
public class TraceWriter
{
private ILogger log;
// Default behaviour
public TraceWriter () :
this(new ConsoleLogger()) { }
// User specified implementation
public TraceWriter ( ILogger logger )
{
this.log = logger;
}
}
我的回答假设您1)希望提供默认行为,2)允许用户在需要时提供特定行为