Domanda

Beh penso che il titolo spiega da sé.

Sto cercando di esportare un oggetto di configurazione attraverso il filo, ma sembra molto difficile, la classe non è serializzabile e ... è sigillato, quindi nessun patrimonio qui.

Come chiunque ha fatto qualcosa di simile prima?

Saluti

È stato utile?

Soluzione 3

Beh penso di aver trovato una buona soluzione per questo problema. Si passa serializzando sezioni invece dell'oggetto Configurazione stessa. Quindi, al fine di garantire tutte le sezioni di cui ho bisogno ottenere serializzato / deserializzata insieme li ho avvolto tutto in uno ConfigurationSectionGroup. Mi fa il lavoro, e mi permette di impostazioni di esportazione e di importazione attraverso un servizio WCF, o direttamente sul file. Ecco il codice che ho usato:

Una classe di base sezione di configurazione:

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

La speranza che aiuta qualcuno ...

Saluti

Altri suggerimenti

Si dovrà strappare i bit si ha realmente bisogno, metterli in una classe separata che è serializzabile e ha [DataContract] e gli attributi [DataMember] per WCF serializzazione, e quindi è necessario fare il contrario all'altro capo del filo.

WCF trasmette solo i dati - serializzato in formato XML. Se non è possibile serializzare i dati come è, è necessario lavorare intorno ad esso da soli - non c'è bacchetta magica per risolvere questo un altro modo ...

Per alleviare il dolore di copiare un sacco di oggetti di una classe all'altra, mi consiglia di utilizzare un po 'di biblioteca come automapper che può eliminare un sacco di noioso, ripetitivo codice da assegnare da un oggetto all'altro.

Questa classe è più di un pass-through per l'accesso ai file di configurazione dell'applicazione. Serializzazione in realtà non ha molto senso, ma ciò che si può desiderare di fare è tirare i valori fuori di esso e li roba in una nuova classe che si controlla. Poi tutto quello che dovete fare è assicurarsi che la nuova classe è serializzabile.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top