Those interfaces are implemented in my entity base class
(BindableObject) from which GuidPOCO is derived (Section > GuidPOCO >
BindableObject). I am not familiar with the term boiled code, so I am
not sure how to respond. Please let me know if you need any
additional info or if I am misunderstanding something.
This is how my base class is defined:
public abstract class BindableObject : INotifyPropertyChanged,
IEditableObject, IDataErrorInfo
Thanks in advance,
Chris
On Aug 24, 10:53 pm, Fabio Maulo <[email protected]> wrote:
> Classes in this
> domainhttp://code.google.com/p/unhaddins/source/browse/trunk/Examples/uNHAd...
> <http://code.google.com/p/unhaddins/source/browse/trunk/Examples/uNHAd...>are
> implementing INotifyPropertyChanged, IEditableObject, IDataErrorInfo...
> but... where is the boiled code ?
>
> how that entities can work in this video ? (see
> bottom)http://jfromaniello.blogspot.com/2009/08/nhibernate-and-wpf-viewmodel...
>
> 2009/8/25 Chris Willard <[email protected]>
>
>
>
> > Yeah, I was thinking he wanted to see the entire entity for some
> > reason...
>
> > On Aug 24, 10:06 pm, Fabio Maulo <[email protected]> wrote:
> > > too much boiled code.
>
> > > 2009/8/24 Chris Willard <[email protected]>
>
> > > > 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 <[email protected]> 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 <[email protected]>
>
> > > > > > 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.
>
> ...
>
> read more »
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"nhusers" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/nhusers?hl=en
-~----------~----~----~----~------~----~------~--~---