Communauté Dear Stack Overflow, Je pensais que je n'aurais jamais à poser cette question, mais apparemment, quelque chose ne va pas avec la sérialisation ou mon utilisation de celle-ci.Problème de sérialisation d'objet (C#)
J'ai une classe que je dois sérialisation:
[Serializable]
public class Device : ISerializable, IDisposable
{
public delegate void ListChangedEventHandler(object sender, ListChangedEventArgs e);
public string Name { get; set; }
public string Description { get; set; }
public string IPAddress { get; set; }
[Browsable(false)]
public ThreadSafeBindingList<Item> Items { get; set; }
[Browsable(false)]
public MibEntity AssociatedMibEntity { get; set; }
//methods etc.
}
Une petite explication:
ThreadSafeBindingList est héritée de System.ComponentModel.BindingList MibEntity est une classe de bibliothèque SharpSNMP (http://sharpsnmplib.codeplex.com/)
Problème: Lorsque j'essaie t o désérialiser l'objet, MibEntity est toujours nul. D'autres propriétés sont bien. La classe MibEntity est dans une DLL externe, que je référence dans le projet où réside la classe Device.
C'est son contenu:
[Serializable]
public class MibEntity
{
public MibEntity()
{
Children = new List<MibEntity>();
}
[Browsable(false)]
public List<MibEntity> Children { get; set; }
[Browsable(true)]
[Category("General")]
public string OID { get; set; }
private string _name;
[Browsable(true)]
[Category("General")]
public string Name
{
get { return _name; }
set { _name = value; }
}
[Browsable(true)]
public string Description { get; set; }
[Browsable(false)]
public int Value { get; set; }
[Browsable(true)]
public AccessType AccessType { get; set; } //this is enum from SharpSNMP library
[Browsable(true)]
public Status Status { get; set; } //this is enum from same assembly as this class
[Browsable(true)]
public string Syntax { get; set; }
[Browsable(true)]
public bool IsTableEntry { get; set; }
[Browsable(true)]
public IDefinition IDefinition { get; set; } //this is interface from SharpSNMP library
}
J'utilise BinaryFormatter pour la sérialisation et la désérialisation. Nous vous remercions de votre aide!
Puisque vous avez une sérialisation personnalisée via 'ISerializable', nous aurions besoin de voir à la fois la méthode' GetObjectData' personnalisée et le constructeur de désérialisation personnalisé. –