使用 CaSTLe Windsor 进行 DI,我有两个实现相同接口(interface)的类;除此之外,还有一些自己的方法和属性。我正在使用 CaSTLe DynamicProxy 并创建了一个拦截器,它将通过 CaSTLe.Facilities.LoggingLoggingFacility 使用 Log4Net 进行一些日志记录。
当该方法被调用时,日志文件会整齐地记录通过接口(interface)实现的每个方法。在下面的示例代码中,方法 Foo() 在调用时会被记录,但方法 LogMeToo() 不会,因为它不是 IFoo 实现的一部分。
我希望其他未实现该接口(interface)的方法在调用时也被记录。这可能吗?如果可能:如何?
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
最佳答案
不,这是不可能的,除非您将方法设为虚拟并将类公开为(第一个)服务,以便生成类代理。然而,这闻起来像是 splinter 的抽象。如果您将 Foo
公开为 IFoo
,则无论如何都不会调用 LogMeToo
- 无需记录任何内容。
关于c# - 没有接口(interface)的 CaSTLe Windsor 拦截器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4863025/