Могу ли я использовать динамический прокси 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.