Как отправить систему.Конфигурация.Объект конфигурации через WCF
-
10-10-2019 - |
Вопрос
Ну, я думаю, название объясняет само за себя.
Я пытаюсь экспортировать объект конфигурации через провод, но это выглядит довольно сложно, класс не сериализуем и...он запечатан, так что никакого наследия здесь нет.
Кто-нибудь делал что-то подобное раньше?
С уважением
Решение 3
Ну, я думаю, что нашел хорошее решение для этой проблемы. Он проходит путем сериализации разделов вместо самого объекта конфигурации. Таким образом, чтобы гарантировать, что все разделы, которые мне нужно, собираться с сериализованными/десериализованными, я завершил их все в одну конфигурационную группу. Я выполняю задание и позволяет мне экспортировать и импортировать настройки Syrough Service или непосредственно в файле. Вот код, который я использовал:
Базовый класс раздела конфигурации:
public abstract class ConfigurationSectionBase : ConfigurationSection
{
public string Serialize()
{
return SerializeSection(null, Name, ConfigurationSaveMode.Minimal);
}
public void Deserialize(string configuration)
{
XmlReader reader = XmlReader.Create(new StringReader(configuration));
if (!reader.ReadToFollowing(Name)) return;
StringBuilder stringBuilder = new StringBuilder().Append(reader.ReadOuterXml());
var stringReader = new StringReader(stringBuilder.ToString());
reader = XmlReader.Create(stringReader);
DeserializeSection(reader);
}
}
Надеюсь, это поможет кому -то ...
С Уважением
Другие советы
Вам придется выделить те фрагменты, которые вам действительно нужны, поместить их в отдельный класс, который является сериализуемым и имеет [DataContract]
и [DataMember]
атрибуты для сериализации WCF, а затем вам нужно сделать обратное на другом конце.
WCF передает только данные, сериализованные в формате XML.Если вы не можете сериализовать свои данные как есть, вам нужно обойти это самостоятельно - нет волшебного средства, чтобы решить эту проблему другим способом...
Чтобы облегчить задачу копирования множества свойств из одного класса в другой, я бы рекомендовал использовать какую-нибудь библиотеку, например Автоматический преобразователь это может устранить большую часть скучного, повторяющегося кода для переназначения одного объекта другому.
Этот класс является скорее прохождением для доступа к файлу конфигурации приложения. Сериализация это на самом деле не имеет большого смысла, но вы, возможно, захотите сделать из них, это вытащить из них значения и внести их в новый класс, который вы контролируете. Тогда все, что вам нужно сделать, это убедиться, что новый класс сериализуется.