是否可以在真实代理类中定义透明代理的自定义转换行为?
例如:
public class TestProxy : RealProxy
{
public TestProxy() : base(typeof(MarshalByRefObject))
{
}
public override IMessage Invoke(IMessage msg)
{
throw new NotImplementedException();
}
}
object proxy = new TestProxy().GetTransparentProxy();
Console.WriteLine((string)proxy);
此代码抛出 System.InvalidCastException:无法将透明代理强制转换为类型System.String。是否可以检测强制转换并在TestProxy
类中处理它?</ p >
编辑:转换为COM接口的代码就足够了。
答案 0 :(得分:0)
我能够实现这一目标的唯一方法是使用Castle和vanilla .NET代码。我从来没有发现.NET对象本身的公共方法和属性足以满足我的需求。
我通常使用Castle Windsor WCF Facility处理这个问题,这意味着您必须使用Castle Windsor作为您的DI(或有2个容器)。
您也可以单独使用Castle.DynamicProxy,详见此处: https://msdn.microsoft.com/en-us/magazine/dn574804.aspx