使用 Castle Windsor 进行 DI,我有两个实现相同接口的类;除此之外还有一些自己的方法和属性。我正在使用 Castle DynamicProxy 并创建了一个拦截器,它将通过 Castle.Facilities.LoggingLoggingFacility 使用 Log4Net 进行一些日志记录。
当调用该方法时,日志文件整齐地记录通过接口实现的每个方法。在下面的示例代码中,方法 Foo() 在调用时会被记录,但方法 LogMeToo() 不会,因为它不是 IFoo 实现的一部分。
我还希望在调用时记录其他未实现接口的方法。这是可能的,如果是这样:如何?
public interface IFoo
{
void Bar();
}
[Interceptor(typeof(LoggingInterceptor))]
public class Foo : IFoo
{
public void Bar()
{
// Do Something
}
public void LogMeToo()
{
// Do Something
}
}
public static class Program
{
[STAThread]
public static void Start()
{
var container = new WindsorContainer();
container.Register(Component.For<LoggingInterceptor
>().LifeStyle.Transient);
container.Register(Component.For<IFoo
>().ImplementedBy<Foo
>());
container.AddFacility<LoggingFacility
>(f => f.LogUsing(LoggerImplementation.Log4net).WithConfig("Log4net.config"));
}
}
WPF C# 4.0