定义RealProxy的自定义转换

时间:2015-02-27 15:26:00

标签: c# .net remoting

是否可以在真实代理类中定义透明代理的自定义转换行为?
例如:

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接口的代码就足够了。

1 个答案:

答案 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