2

このページhttp://docs.castleproject.org/Windsor.Introduction-to-AOP-With-Castle.ashxのコードを使用して、流暢な方法でインターセプターを登録しようとしています。しかし、私はこのエラーがスローされます。2.5 から 3.3 までの Castle Windsor バージョンを試しました。したがって、インターセプターのセットアップ方法は非常に基本的なものでなければなりません

クラス

public interface ISomething
{
    Int32 Augment(Int32 input);
    void DoSomething(String input);
    Int32 Property { get; set; }
}

class Something : ISomething
{
    public int Augment(int input) {
        return input + 1;
    }

    public void DoSomething(string input) {
        Console.WriteLine("I'm doing something: " + input);
    }

    public int Property { get; set; }
 }

public class DumpInterceptor : IInterceptor
{
    public void Intercept(IInvocation invocation) {
        Console.WriteLine("DumpInterceptorCalled on method " +
            invocation.Method.Name);
        invocation.Proceed();

        if (invocation.Method.ReturnType == typeof(Int32)) {
            invocation.ReturnValue = (Int32)invocation.ReturnValue + 1;
        }

        Console.WriteLine("DumpInterceptor returnvalue is " +
            (invocation.ReturnValue ?? "NULL"));
    }     
}

設定

Console.WriteLine("Run 2 - configuration fluent");
using (WindsorContainer container = new WindsorContainer())
{
    container.Register(
        Component.For<IInterceptor>()
        .ImplementedBy<DumpInterceptor>()
        .Named("myinterceptor"));
    container.Register(
        Component.For<ISomething>()
        .ImplementedBy<Something>()
     .Interceptors(InterceptorReference.ForKey("myinterceptor")).Anywhere);


    ISomething something = container.Resolve<ISomething>(); //Offending row

    something.DoSomething("");

    Console.WriteLine("Augment 10 returns " + something.Augment(10));
}

エラー

アセンブリ 'DynamicProxyGenAssembly2、バージョン = 0.0.0.0、カルチャ = ニュートラル、PublicKeyToken = null' からのタイプ 'Castle.Proxies.ISomethingProxy' は、アクセスできないインターフェイスを実装しようとしています。

4

1 に答える 1