Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 如何检测MarshalByRefObject是本地还是远程?_.net_Remoting_Marshalbyrefobject - Fatal编程技术网

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

.net 如何检测MarshalByRefObject是本地还是远程?,.net,remoting,marshalbyrefobject,.net,Remoting,Marshalbyrefobject,换句话说,我如何判断我是否有对TransparentProxy或本地对象的引用?试试这个有趣的小把戏: bool fIsTransparentProxy = ((myTransparentObject as MarshalByRefObject) == null); 当我尝试将透明代理转换为MarshalByRefObject时,它返回null。我在VB中测试了这一点,因为我的所有代理都在VB中,但希望在C中也有同样的行为 还要注意的是,Visual Studio调试器知道哪个是哪个,但我不知

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

试试这个有趣的小把戏:

bool fIsTransparentProxy = ((myTransparentObject as MarshalByRefObject) == null);
当我尝试将透明代理转换为MarshalByRefObject时,它返回null。我在VB中测试了这一点,因为我的所有代理都在VB中,但希望在C中也有同样的行为


还要注意的是,Visual Studio调试器知道哪个是哪个,但我不知道如何获取产生相同结果的代码,这些结果悬浮在VS shows System.Runtime.Remoting.Proxies中的TP对象上。\u TransparentProxy作为类类型,但这是一个内部密封类。

请查看中的方法。

对我不起作用。当对象是TP时,强制转换成功。虽然AppDomain不同,但我所有的对象都在同一个进程中。难道你的代码不应该事先知道你是在本地还是在远程吗?还有,obj.GeType.IsMarshalByRef或obj.GeType.IsContextful是否会产生任何有用的可能性?实际上,我正在调试通过序列化意外跨越边界的对象的问题,因此我想编写一个断言,确定某个对象是TP。啊,对了,这很公平。那么我刚才建议的这两种解决方案呢?@Noldorin,我认为如果obj的类型是X,那么无论obj是本地的还是远程的,GetType都会返回相同的东西typeofX。