Yeah, I was thinking he wanted to see the entire entity for some
reason...

On Aug 24, 10:06 pm, Fabio Maulo <fabioma...@gmail.com> wrote:
> too much boiled code.
>
> 2009/8/24 Chris Willard <chris.will...@rimrockgroup.com>
>
>
>
> > Oh yeah, sorry.  I am calling this extension method to remove the
> > item:
>
> >        public static void RemoveRange<T>(this ICollection<T>
> > collection, IEnumerable<T> items)
> >        {
> >            if (items != null)
> >            {
> >                foreach (var item in items)
> >                {
> >                    collection.Remove(item);
> >                }
> >            }
> >        }
>
> > And this is the entity:
>
> > using System;
> > using System.Collections.Generic;
> > using System.Linq;
> > using System.Text;
> > using RGI.Utilities;
> > using RGI.Utilities.Validators;
> > using uNhAddIns.WPF.Collections;
>
> > namespace RGI.BMS.POCO
> > {
> >    [Serializable]
> >    public class Section : GuidPOCO
> >    {
> >        #region Constructors
>
> >        public Section() : base()
> >        {
> >            this.SectionNumbers = new ObservableSet<SectionNumber>();
> >        }
>
> >        #endregion
>
> >        #region Fields
>
> >        private string _Name;
> >        private Employee _ModifiedBy;
> >        private DateTime _ModifiedDate;
> >        private ICollection<SectionNumber> _SectionNumbers;
>
> >        #endregion
>
> >        #region Properties
>
> >        public virtual string Name
> >        {
> >            get { return _Name; }
> >            set
> >            {
> >                _Name = value;
> >                NotifyPropertyChanged("Name");
> >            }
> >        }
>
> >        public virtual Employee ModifiedBy
> >        {
> >            get { return _ModifiedBy; }
> >            set
> >            {
> >                _ModifiedBy = value;
> >                NotifyPropertyChanged("ModifiedBy");
> >            }
> >        }
>
> >        public virtual DateTime ModifiedDate
> >        {
> >            get { return _ModifiedDate; }
> >            set
> >            {
> >                _ModifiedDate = value;
> >                NotifyPropertyChanged("ModifiedDate");
> >            }
> >        }
>
> >        public virtual ICollection<SectionNumber> SectionNumbers
> >        {
> >            get { return _SectionNumbers; }
> >            set
> >            {
> >                _SectionNumbers = value;
> >                NotifyPropertyChanged("SectionNumbers");
> >            }
> >        }
>
> >        #endregion
>
> >        #region Methods
>
> >        public override int GetHashCode()
> >        {
> >            System.Text.StringBuilder sb = new
> > System.Text.StringBuilder();
>
> >            sb.Append(this.GetType().FullName);
> >            sb.Append(Id);
> >            sb.Append(_ModifiedBy);
> >            sb.Append(_ModifiedDate);
> >            sb.Append(_Name);
>
> >            return sb.ToString().GetHashCode();
> >        }
>
> >        #endregion
>
> >        #region Readonly Properties
>
> >        public virtual string NumberDisplay
> >        {
> >            get
> >            {
> >                StringBuilder bld = new StringBuilder();
>
> >                //Get sorted list
> >                var numbers = this.SectionNumbers.OrderBy(o =>
> > o.Number);
>
> >                foreach (var item in numbers)
> >                {
> >                    bld.Append(item.Number);
> >                    if (!numbers.Last().Equals(item))
> >                        bld.Append(", ");
> >                }
>
> >                return bld.ToString();
> >            }
> >        }
>
> >        #endregion
>
> >        #region Validation
>
> >        public override string this[string columnName]
> >        {
> >            get { return CheckValidation(this, columnName); }
> >        }
>
> >        #endregion
> >    }
> > }
>
> > Thanks again for all the help,
> > Chris
>
> > On Aug 24, 6:54 pm, José Romaniello <jfromanie...@gmail.com> wrote:
> > > Sorry, I want to see the property where you need to put the
> > observableset.
> > > And the code that you are using to remove an item from that collection.
>
> > > 2009/8/24 Chris Willard <chris.will...@rimrockgroup.com>
>
> > > > Below is my base entity class.  I have a class (GuidPOCO) that
> > > > inherits from BindableObject and just implements an Id property as a
> > > > guid along with some vaidation logic.
>
> > > >    /// <summary>
> > > >    /// Implements the INotifyPropertyChanged interface and
> > > >    /// exposes a NotifyPropertyChanged method for derived
> > > >    /// classes to raise the PropertyChange event.  The event
> > > >    /// arguments created by this class are cached to prevent
> > > >    /// managed heap fragmentation.
> > > >    /// </summary>
> > > >    [Serializable]
> > > >    public abstract class BindableObject : INotifyPropertyChanged,
> > > > IEditableObject, IDataErrorInfo
> > > >    {
> > > >        #region Data
>
> > > >        private static readonly Dictionary<string,
> > > > PropertyChangedEventArgs> eventArgCache;
> > > >        private const string ERROR_MSG = "{0} is not a public property
> > > > of {1}";
> > > >        private static readonly object syncLock = new object();
> > > >        private HybridDictionary oldState;
>
> > > >        #endregion // Data
>
> > > >        #region Constructors
>
> > > >        static BindableObject()
> > > >        {
> > > >            eventArgCache = new Dictionary<string,
> > > > PropertyChangedEventArgs>();
> > > >        }
>
> > > >        protected BindableObject()
> > > >        {
>
> > > >        }
>
> > > >        #endregion // Constructors
>
> > > >        #region Public Members
>
> > > >        /// <summary>
> > > >        /// Raised when a public property of this object is set.
> > > >        /// </summary>
> > > >        [field: NonSerialized]
> > > >        public virtual event PropertyChangedEventHandler
> > > > PropertyChanged;
>
> > > >        /// <summary>
> > > >        /// Returns an instance of PropertyChangedEventArgs for
> > > >        /// the specified property name.
> > > >        /// </summary>
> > > >        /// <param name="propertyName">
> > > >        /// The name of the property to create event args for.
> > > >        /// </param>
> > > >        public static PropertyChangedEventArgs
> > > > GetPropertyChangedEventArgs(string propertyName)
> > > >        {
> > > >            if (String.IsNullOrEmpty(propertyName))
> > > >                throw new ArgumentException("propertyName cannot be
> > > > null or empty.");
>
> > > >            PropertyChangedEventArgs args;
> > > >            lock (BindableObject.syncLock)
> > > >            {
> > > >                if (!eventArgCache.TryGetValue(propertyName, out
> > > > args))
> > > >                {
> > > >                    eventArgCache.Add(propertyName, args = new
> > > > PropertyChangedEventArgs(propertyName));
> > > >                }
> > > >            }
> > > >            return args;
> > > >        }
>
> > > >        public abstract bool IsPropertyValid { get; }
>
> > > >        public abstract bool IsValid { get; }
>
> > > >        public abstract string ValidationErrors { get; }
>
> > > >        #endregion // Public Members
>
> > > >        #region Protected Members
>
> > > >        /// <summary>
> > > >        /// Derived classes can override this method to
> > > >        /// execute logic after a property is set. The
> > > >        /// base implementation does nothing.
> > > >        /// </summary>
> > > >        /// <param name="propertyName">
> > > >        /// The property which was changed.
> > > >        /// </param>
> > > >        protected virtual void AfterPropertyChanged(string
> > > > propertyName)
> > > >        {
> > > >        }
>
> > > >        /// <summary>
> > > >        /// Attempts to raise the PropertyChanged event, and
> > > >        /// invokes the virtual AfterPropertyChanged method,
> > > >        /// regardless of whether the event was raised or not.
> > > >        /// </summary>
> > > >        /// <param name="propertyName">
> > > >        /// The property which was changed.
> > > >        /// </param>
> > > >        protected virtual void NotifyPropertyChanged(string
> > > > propertyName)
> > > >        {
> > > >            this.VerifyProperty(propertyName);
>
> > > >            PropertyChangedEventHandler handler =
> > > > this.PropertyChanged;
> > > >            if (handler != null)
> > > >            {
> > > >                // Get the cached event args.
> > > >                PropertyChangedEventArgs args =
> > > >                    GetPropertyChangedEventArgs(propertyName);
>
> > > >                // Raise the PropertyChanged event.
> > > >                handler(this, args);
> > > >            }
>
> > > >            this.AfterPropertyChanged(propertyName);
> > > >        }
>
> > > >        #endregion // Protected Members
>
> > > >        #region Private Helpers
>
> > > >        [Conditional("DEBUG")]
> > > >        private void VerifyProperty(string propertyName)
> > > >        {
> > > >            // Thanks to Rama Krishna Vavilala for the tip to use
> > > > TypeDescriptor here, instead of manual
> > > >            // reflection, so that custom properties are honored too.
> > > >            //
> > > >http://www.codeproject.com/KB/WPF/podder1.aspx?msg=2381272#xx2381272xx
>
> > > >            bool propertyExists = TypeDescriptor.GetProperties
> > > > (this).Find(propertyName, false) != null;
> > > >            if (!propertyExists)
> > > >            {
> > > >                // The property could not be found,
> > > >                // so alert the developer of the problem.
>
> > > >                string msg = string.Format(
> > > >                    ERROR_MSG,
> > > >                    propertyName,
> > > >                    this.GetType().FullName);
>
> > > >                Debug.Fail(msg);
> > > >            }
> > > >        }
>
> > > >        #endregion // Private Helpers
>
> > > >        #region Implementation of IEditableObject
>
> > > >        public virtual void BeginEdit()
> > > >        {
> > > >            oldState = new HybridDictionary();
> > > >            foreach (PropertyInfo property in this.GetType
>
> ...
>
> read more »
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"nhusers" group.
To post to this group, send email to nhusers@googlegroups.com
To unsubscribe from this group, send email to 
nhusers+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/nhusers?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to