Изменить настройки после вызова RemoteConfiguration.Configure (configFile)? - PullRequest
0 голосов
/ 18 ноября 2010

Мое приложение вызывает RemotingConfiguration.Configure() для настройки .NET Remoting.Но так как мне нужно, чтобы атрибут portName элемента channel был разным при каждом запуске приложения, я должен настроить этот конкретный параметр программно.

Звучит очень просто (и, вероятно, так и есть - но я ужепоиск в Google весь день для ответа).

Пока у меня есть:

RemotingConfiguration.Configure(Program.ConfigFilePath, false);

IChannel[] regChans = ChannelServices.RegisteredChannels;
IpcChannel ipcChannel = (IpcChannel)ChannelServices.GetChannel(regChans[0].ChannelName);

Отладчик показывает мне, что ipcChannel._serverChannel._prop будет хеш-таблицей, к которой мне нужно добавить записьнапример, ["portName"] = uniquePortName, но я просто не могу понять, как получить к нему доступ и изменить его.

Я знаю, что всегда могу удалить файл * .config и выполнить все это программно, но я действительно не хочу отказываться от преимуществ, связанных с простотой редактирования большинства настроек.

Не слишком ли поздно модифицировать объект IpcClientChannel после возвращения RemotingConfiguration.Configure()?Очевидно, я мог бы написать свою собственную версию RemotingConfiguration.Configure(), но это тоже не похоже на правильный способ сделать что-либо.

1 Ответ

0 голосов
/ 18 ноября 2010

Мне кажется, я установил, что то, что я хотел сделать, невозможно.

Вы можете либо использовать RemotingConfiguration.Configure() или что-то вроде:

  IDictionary channelProperties = new Hashtable();
  channelProperties.Add("authorizedGroup", "Everyone");
  channelProperties.Add("portName", "Client-" + Guid.NewGuid().ToString()); // Unique port name
  IpcChannel channel = new IpcChannel(channelProperties, null, null);
  ChannelServices.RegisterChannel(channel);

Вы не можете смешивать и сочетать.По крайней мере, похоже, что так оно и есть.

(Конечно, вы все равно можете прочитать любую из этих настроек из файла * .config, но дело в том, что вы должны явно кодировать все возможные вариантыхочу поддержать.)

...