Могу ли я использовать динамический прокси Linfu для прокси интерфейса с общими параметрами?

В настоящее время я использую Linfu для создания динамических прокси, и он работает очень хорошо для обычных интерфейсов. Проблема в том, что теперь мне нужно создать динамический прокси для интерфейса с общими параметрами. Я не знаю типы общих параметров (или даже загружаю сборки, содержащие их) до времени выполнения. Кто-нибудь знает, возможно ли это вообще?

1 ответ

Решение

Хорошо, я могу сделать это, вызвав MyProxyFactory.CreateProxy() с отражением примерно так:

        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.

Другие вопросы по тегам