2013-12-21 32 views
1

我在寫一個使用.net Remoting通過MarshalByRefObject的應用程序。 我可以連接,一切工作正常,如方法調用簡單的東西。 現在的問題是,當我嘗試訪問從早期調用收到的對象上的屬性時,屬性獲取器將執行「客戶端」端,而不是主機進程內部。.net遠程處理 - 在主機上執行Getter

在這些getters裏面,我在本地進程上使用了編組技術,因此它們需要在主進程而不是客戶端上運行。

我現在的問題是:是否有任何具體的方法來實現我想要做的,或者我將不得不去路由和主機端在暴露的接口和實現類寫額外的方法,這將返回getters的值?

我的代碼如下所示:

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"); 

主機進程。

這是客戶端

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

感謝您的幫助

回答

0

outch,我傻。 不僅接口類的實現應該從MarshalByRefObject派生,我所傳遞的所有其他對象也應該如此。