Overblog Suivre ce blog
Editer l'article Administration Créer mon blog

Présentation

  • : Romagny13 - Du .NET,du pur .NET
  • Romagny13 - Du .NET,du pur .NET
  • : Cycle de progression Faire (quelque chose qui marche) -> comprendre ce que l’on fait/comment cela marche -> pousser plus loin les notions
  • Contact

Recherche

Articles Récents

29 mars 2014 6 29 /03 /mars /2014 17:53

J’utilise la réflexion.

L’avantage est de ne pas avoir à implémenter IEditableObject dans chaque POCO  .Il y a peut-être moyen de faire mieux mais l’idée est là.
Exemple avec ModelBase avec MVVM .
    public class ModelBase :
        ObservedBase,
        IDataErrorInfo,
        IEditableObject
    {
 
       // code retiré pour la clarté
 
       #region IEditableObject
 
        private Dictionary<string, object> _cache;
 
        public void BeginEdit()
        {
            _cache = new Dictionary<string, object>();
 
            IEnumerable<PropertyInfo> properties = this.GetType().GetProperties(BindingFlags.Public | BindingFlags.Instance).Where(p => p.CanRead && p.CanWrite);
            foreach (PropertyInfo property in properties)                    
                _cache.Add(property.Name, property.GetValue(this, null));
                                 
 
        }
 
        public void CancelEdit()
        {
            if (_cache != null)
            {
                IEnumerable<PropertyInfo> properties = this.GetType().GetProperties(BindingFlags.Public | BindingFlags.Instance).Where(p => p.CanRead && p.CanWrite);
 
                foreach (PropertyInfo property in properties)
                    property.SetValue(this, _cache[property.Name], null);
 
                _cache = null;
            }
        }
 
        public void EndEdit()
        {
            _cache = null;                    
        }
 
        #endregion
    } 

 

 

Partager cet article

Repost 0
Published by Romagny13 - dans MVVM
commenter cet article

commentaires