Как отправить систему.Конфигурация.Объект конфигурации через WCF

StackOverflow https://stackoverflow.com/questions/3987994

Вопрос

Ну, я думаю, название объясняет само за себя.

Я пытаюсь экспортировать объект конфигурации через провод, но это выглядит довольно сложно, класс не сериализуем и...он запечатан, так что никакого наследия здесь нет.

Кто-нибудь делал что-то подобное раньше?

С уважением

Это было полезно?

Решение 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.Если вы не можете сериализовать свои данные как есть, вам нужно обойти это самостоятельно - нет волшебного средства, чтобы решить эту проблему другим способом...

Чтобы облегчить задачу копирования множества свойств из одного класса в другой, я бы рекомендовал использовать какую-нибудь библиотеку, например Автоматический преобразователь это может устранить большую часть скучного, повторяющегося кода для переназначения одного объекта другому.

Этот класс является скорее прохождением для доступа к файлу конфигурации приложения. Сериализация это на самом деле не имеет большого смысла, но вы, возможно, захотите сделать из них, это вытащить из них значения и внести их в новый класс, который вы контролируете. Тогда все, что вам нужно сделать, это убедиться, что новый класс сериализуется.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top