У меня небольшая проблема с одноэлементным классом, который я раскрываю с помощью удаленного взаимодействия. На моем сервере у меня есть:
TcpChannel channel = new TcpChannel( Settings.Default.RemotingPort );
ChannelServices.RegisterChannel( channel, false );
RemotingConfiguration.RegisterWellKnownServiceType(
typeof( RemotableObject ), "RemotableObject",
WellKnownObjectMode.Singleton );
RemotableObject - это одноэлементный объект, который наследует MarshalByRefObject.
Мой клиент подключается к нему через:
remoteObject = (RemotableObject)Activator.GetObject(
typeof( RemotableObject ),
string.Format( "tcp://{0}:{1}/RemotableObject", serverIP, serverPort ) );
Все отлично работает в том, что касается удаленного взаимодействия, но когда я получаю доступ к одноэлементному объекту в моем коде сервера, вот так:
int someValue = RemotableObject.Instance.SomeDynamicValue;
Он обращается к другому экземпляру, чем клиенты. Я также проверил, что закрытый конструктор в RemotableObject дважды получает удар при отладке.
Я могу получить желаемое поведение, если получу экземпляр для RemotableObject с помощью удаленного взаимодействия в коде моего сервера, но есть ли способ получить доступ к тому же объекту, что и мои клиенты, с сервера без затрат на удаленное взаимодействие?