DataContractSerializer при xml сериализации затрагивает игнорируемые поля - C#
Формулировка задачи:
Привет всем. Вот класс, который я сериализую:json и yaml сериализация работают как нужно и не лезут в последние 3 поля. Storage находится в отношениях с FileMetaInfo 1 ко многим, поэтому попытка сериализовать это поле приведет к рекурсивному вызову друг друга.
xml сериализация как ни крути лезет туда и получается то, что я описал выше
Вот код сериализации:IgnoreDataMember не предлагайте, он тут не нужен да и не дает эффекта, я пробовал
[DataContract] public class FileMetaInfo { [DataMember] public string Hash { get; set; } [DataMember] public string FileName { get; set; } [DataMember] public long Size { get; set; } [DataMember] public string Author { get; set; } [DataMember] public DateTime CreationDateTime { get; set; } [DataMember] public int DownloadsCount { get; set; } public int FileMetaInfoId { get; set; } public int StorageId { get; set; } public virtual Storage Storage { get; set; } public FileMetaInfo() { } }
public class XmlPlugin : ISerializePlugin { public string Format { get; } = "xml"; public void Serialize(T source, string path) { using (StreamWriter file = File.CreateText(path)) { using (var writer = new XmlTextWriter(file)) { DataContractSerializer serializer = new DataContractSerializer(typeof(T)); serializer.WriteObject(writer, source); } } } }
Решение задачи: «DataContractSerializer при xml сериализации затрагивает игнорируемые поля»
textual
Листинг программы
_dbContext.Сonfiguration.EnableProxyCreation = false;
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д