2013-12-21 1 views
1

MarshalByRefObject를 통해 .net Remoting을 사용하는 응용 프로그램을 작성하고 있습니다. 연결할 수 있고 모든 것이 메서드 호출과 같은 간단한 작업에 잘 작동합니다. 이제 문제는 이전 호출에서받은 객체의 속성에 액세스하려고하면 속성 getters가 호스트 프로세스 내부가 아니라 "클라이언트"측에서 실행된다는 것입니다..net Remoting - 호스트에서 Getter 실행

내부 getter 내 로컬 프로세스에서 Marshalling을 사용하고 있으므로 클라이언트 대신 호스트 프로세스에서 실행해야합니다.

내 질문에 : 내가 무엇을 하려는지를 달성하기위한 구체적인 방법이 있습니까? 아니면 호스트 측에서 공개 인터페이스에 추가 메서드를 작성하고 클래스를 구현해야합니까? 게터의 가치를 돌려 주시겠습니까?

내 코드는 다음과 같습니다 : 호스트 프로세스에 대한

MyApi api = new MyApi(); 
var channel = new IpcChannel(processId.ToString()); 
ChannelServices.RegisterChannel(channel, false); 
RemotingConfiguration.CustomErrorsMode = CustomErrorsModes.On; 
RemotingConfiguration.ApplicationName = "MyApi-Server" + processId; 
RemotingServices.Marshal(api, "service"); 

.

가 그리고 이것은 클라이언트 측에게 도움

답변

0

outch에 대한

api = (IMyApi)Activator.GetObject(typeof(IMyApi), "ipc://MyApi-" + process.Id + "/service"); 
MessageBox.Show(api.GetSomething().Someproperty); 

덕분에, 나는 바보입니다. 인터페이스 클래스의 구현은 MarshalByRefObject에서 파생되어야하며, 다른 모든 객체도 전달해야합니다.