/// <summary> /// Creates a new <see cref="PropertyPublisher"/> instance. /// </summary> /// <remarks> /// Subclasses must call <see cref="Initialize"/> in order to register event listeners and /// set up existing members of the collection. /// </remarks> /// <param name="owner">The <see cref="PropertyPublisher"/> to whom the collection belongs; see <see cref="Owner"/>.</param> /// <param name="property">The name of the published property of the <see cref="Owner"/> which returns the <see cref="Collection"/>.</param> public PropertyCollectionHelper(EventQueue dispatcher, PropertyPublisher owner, string property) { this.m_EventQueue = dispatcher; this.m_Owner = owner; this.m_Property = property; this.m_TagTable = Hashtable.Synchronized(new Hashtable()); }
/// <summary> /// Creates a new PropertyPublisher object, publishing all properties /// of this type that have the <c>[Published]</c> attribute. /// The new PropertyPublisher shares the same event tables and /// <see cref="RWL">ReaderWriterLock</see> as the specified parent. /// <seealso cref="GetType"/> <seealso cref="Type.GetProperties"/> /// </summary> protected PropertyPublisher(PropertyPublisher parent) { this.m_Parent = parent; this.Initialize(); }
// FIXME!: Enforce reader locks for all read operations. // This might require reimplementing CollectionBase. public PropertyCollectionBase(PropertyPublisher owner, string property) { this.m_Property = property; this.m_Owner = owner; }