0

現在、Linfu を使用して動的プロキシを作成していますが、通常のインターフェイスでは非常にうまく機能します。問題は、汎用パラメーターを持つインターフェイスの動的プロキシを作成する必要があることです。実行時まで、ジェネリック パラメーターの型がわからない (またはそれらを含むアセンブリを読み込むことさえできない)。これが可能かどうかは誰にもわかりますか?

4

1 に答える 1

0

わかりました、次のようなリフレクションで MyProxyFactory.CreateProxy< T >() を呼び出すことでそれを行うことができます:

        Type myGenericParam1 = myParam1.GetType();
        Type myGenericParam2 = myParam2.GetType();
        Type myGenericInterfaceType = typeof(IMyInterface<,>);
        Type myActualInterfaceType = myGenericInterfaceType.MakeGenericType(myGenericParam1, myGenericParam2);
        var proxyObjectContainer = typeof(MyProxyFactory).GetMethod("CreateProxy", new Type[] { }).MakeGenericMethod(new[] { myActualInterfaceType }).Invoke(null, new object[] { });

        var proxyObject = proxyObjectContainer.GetType().GetProperty("Proxy").GetValue(proxyObjectContainer, null);

明らかに、インターセプターを設定するためにパラメーターをプロキシ ファクトリ コンストラクターに渡す必要がある場合は、これも proxyObjectContainer を作成する行に追加する必要があります。

于 2012-11-26T16:12:09.613 に答える