2014-10-18 53 views
1
ProxyGenerator generator = new ProxyGenerator(); 
var interceptor = new StandardInterceptor(); 
MyInterfaceImpl test = (MyInterfaceImpl)generator.CreateClassProxy(typeof(MyInterfaceImpl), interceptor); 

在上例中,test对象是代理对象,假设它是由第三方创建的。城堡动态代理对象原始对象转换

我无法传递给WCF操作合同,因为它的类型不是MyInterfaceImpl,而是MyInterfaceImpl,但它是MyInterfaceImplProxy

如何将test对象转换为MyInterfaceImpl类型?请帮忙。

回答

2

我已经找到答案here

internal static TType UnwrapProxy<TType>(TType proxy) 
{ 
    if (!ProxyUtil.IsProxy(proxy)) 
     return proxy; 

    try 
    { 
     dynamic dynamicProxy = proxy; 
     return dynamicProxy.__target; 
    } 
    catch (RuntimeBinderException) 
    { 
     return proxy; 
    } 
} 
+1

在我的情况下,我需要dynamicProxy .__拦截器 – 2017-11-22 23:34:50