Я ищу способ сериализации POCO, который содержит некоторые свойства только для чтения. В некоторых поисках Google и StackOverflow, я видел следующие предложения:Сериализовать в XML - частные свойства
- использования DataContractSerializer; или
- SoapFormatter или BinaryFormatter; или
- замените мои свойства readonly на свойства чтения/записи;
Мои классы очень просты, они выглядят как:
public class MyClass
{
public int Id { get; private set; }
public string Name { get; private set; }
public MyClass(int id, string name)
{
Id = id;
Name = name;
}
}
Итак,
- Я не хочу, чтобы мои свойства чтения/записи. Если они доступны только для чтения, это связано с тем, что моя модель домена запрашивает свойства только для чтения. Из-за этого модель домена не может измениться.
- Я не хочу использовать
DataContractSerializer
, так как это загрязнило бы мою модель домена сериализацией. BinaryFormatter
не очень хороший вариант, в результате получаетсяbyte[]
, и я хотел бы рассматривать его какstring
(и я не хочу иметь дело с Encondings и так же, когда Deserializing мой объект).
То, что я действительно хотел бы это класс XmlSerializer способен сериализации только для чтения свойства.
Знаете ли вы, что такое такая реализация? Или любое другое удобное решение?
Спасибо!
Не должны ли внутренние видимые объекты System.Xml.Serialization? –
Вот что я думал в первый раз, когда я пытался это сделать ... однако, сборка, которая фактически выполняет сериализацию (de), не является System.Xml, это определенная сборка сериализации. Обычно эта сборка динамически генерируется XmlSerializer во время выполнения со случайным именем (поэтому вы не можете использовать его с InternalsVisibleTo), но вы можете предварительно сгенерировать его с помощью инструмента командной строки sgen.exe или задачи сборки SGen. В этом случае сборка сериализации будет называться * YourAssemblyName * .XmlSerializers –
Очень интересно. Я бы никогда об этом не подумал. Однако я хотел бы сохранить свои свойства с частными сеттерами. Merci! –