我想在Windows窗体应用程序中使用Castle IOC添加记录器。
我像下面这样注册了记录器:
static class Program
{
[STAThread]
static void Main()
{
IWindsorContainer container = new WindsorContainer().Install(FromAssembly.This());
container.Register(Component.For<ICommonLogger>().ImplementedBy(typeof(CommonLogger)).LifeStyle.Singleton);
container.Kernel.Resolver.AddSubResolver(new EAE_Automation.COM.LoggerResolver(container.Kernel));
}
}
在应用程序的另一个表单中,我尝试将日志记录器作为属性使用,但它在程序中为空。
namespace Test.KNXManagement
{
public partial class Test: Form
{
public ICommonLogger Logger { get; set;}
public Tunneling()
{
Logger.Info("Testing.......................");
}
}
}
我觉得我在这里漏掉了一个重要的点。
ICommonLogger
依赖项移动到Test
表单的构造函数中,并从容器中解析此表单。这样可以在解析表单时找出配置错误。 - StevenLogger = container.Resolve<ICommonLogger>();
吗? - aevitasICommonLogger
是一个接口还是一个类? - aevitas