反映私人远程对象

时间:2009-07-02 14:28:47

标签: c# reflection remoting

我想从远程对象返回一个私有字段,但我得到了异常:

RemotingException被抓住了 远程处理在类型'DBGeneral'上找不到字段'connectionString'。

执行GetField()方法时,我得到Private字段的FieldInfo对象。

FieldInfo field = o.GetType().GetField("connectionString", BindingFlags.Instance | BindingFlags.NonPublic);

但是当它执行GetValue()时,抛出了RemotingException。

field.GetValue(o);

如果我关闭远程处理并反映本地私有connectionString字段,我会将字符串返回给我。

1 个答案:

答案 0 :(得分:1)

这对你如何进行远程处理做了一些假设,可能不对,但会解释你的错误。

当你的对象通过远程发送时,它必须被序列化。序列化程序只能“看到”公共属性,因此私有属性不会通过网络发送。

修改:基于评论

您至少有两个选项:

简单的一点是公开财产。

更多的工作是从使用远程处理切换到使用WCF。然后你可以像这样标记私有变量:

[DataMember(Name="SomeValue")]
private int m_SomeValue;