【发布时间】:2012-10-30 18:34:50
【问题描述】:
我正在使用 .Net Remoting(是的,我知道......这很旧)来实现一些托管在 Windows 服务中的服务类。
我在服务上调用DoOperation(Person[] people) 方法来更改Person 类中的某些属性,就像下面的代码一样:
Person p = new Person();
p.SomeProperty = "This value should be changed by the service";
RemoveSvc svc = (RemoveSvc)Activator.GetObject(
typeof(RemoveSvc),
"tcp://localhost:6100/RemoteService.rem");
svc.DoOperation(new Person[]{ p });
// This writes the old value not the one changed by the service.
Console.WriteLine(p.SomeProperty);
DoOperation 方法代码如下所示:
public void DoOperation(Person[] people) {
foreach(var o in people)
p.SomeProperty = "New Value";
}
这里的问题是当方法返回时Person.SomeProperty的值在客户端代码中没有更新。
我已经仔细检查了Person 类是可序列化的;
svc 变量的类型为 TranparentProxy;
RemoteSvc 类继承MarshalByRefObject;
我正在使用 .net Framework 4(不,我无法迁移到 WCF)
我做错了什么? 这是.net Remoting 的预期行为吗?如果是,有办法改变吗?
Tks
【问题讨论】: