Используя Castle Windsor для DI, у меня есть два класса, которые реализуют один и тот же интерфейс;и кроме того, есть некоторые методы и свои собственные свойства.Я использую Castle DynamicProxy и создал Interceptor, который будет выполнять некоторую регистрацию с Log4Net через Castle.Facilities.LoggingLoggingFacility.
Файл журнала аккуратно регистрирует каждый метод, реализованный через интерфейс, когда этот методвызывается.В приведенном ниже примере кода метод Foo () регистрируется, когда вызывается, но метод LogMeToo () не регистрируется, поскольку он не является частью реализации IFoo.
Я хочу, чтобы и другие методы, которые не реализуют интерфейс, регистрируются при вызове.Возможно ли это, и если да, то как?
public interface IFoo
{
void Bar();
}<br>
[Interceptor(typeof(LoggingInterceptor))]
public class Foo : IFoo
{
public void Bar()
{
// Do Something
}<br>
public void LogMeToo()
{
// Do Something
}
}<br>
public static class Program
{
[STAThread]
public static void Start()
{
var container = new WindsorContainer();<br>
container.Register(Component.For<code><LoggingInterceptor</code>>().LifeStyle.Transient);
container.Register(Component.For<code><IFoo</code>>().ImplementedBy<code><Foo</code>>());<br>
container.AddFacility<code><LoggingFacility</code>>(f => f.LogUsing(LoggerImplementation.Log4net).WithConfig("Log4net.config"));
}
}
WPF C # 4.0