如何检测MarshalByRefObject是本地还是远程?

时间:2012-01-11 01:19:12

标签: .net remoting marshalbyrefobject

换句话说,如何判断我是否有对TransparentProxy或本地对象的引用?

2 个答案:

答案 0 :(得分:5)

查看IsTransparentProxy中的RemotingServices方法。

答案 1 :(得分:0)

尝试这个有趣的小技巧:

bool fIsTransparentProxy = ((myTransparentObject as MarshalByRefObject) == null);

当我尝试将透明代理转换为MarshalByRefObject时,它返回null。我在VB中对此进行了测试,因为这是我所有代理所在的地方,但希望在C#中也能保持相同的行为。

另请注意,Visual Studio调试器知道哪个是哪个,但我无法弄清楚如何获取产生相同结果的代码(将鼠标悬停在VS中的TP对象上显示System.Runtime.Remoting.Proxies.__TransparentProxy作为类类型,但是这是一个内部密封的课程。)