可能重复:
In 和 Out 属性在 .NET 中如何工作?
我正在使用 .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