重複の可能性:
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に移行できません)
私は何が間違っているのですか?これは.netRemotingの予想される動作ですか?もしそうなら、それを変更する方法はありますか?
Tks