JD2022-TU1/main/tools/framework/JD.TeaBoxAddinSystem/Addins/Description/AddinObjectCollection.cs

101 lines
2.4 KiB
C#

using System;
using System.Collections.Generic;
namespace JD.TeaBoxAddinSystem.Addins.Description
{
/// <summary>
/// A collection of <see cref="AddinObject"/>s.
/// </summary>
internal class AddinObjectCollection<T> : AddinCollection<T> where T : AddinObject
{
#region Constructor
/// <summary>
/// Constructor.
/// </summary>
internal AddinObjectCollection()
: this(null)
{
}
/// <summary>
/// Constructor.
/// </summary>
/// <param name="owner"></param>
internal AddinObjectCollection(Module owner)
: base(owner)
{
}
#endregion
#region Methods
/// <summary>
/// Overriden.
/// </summary>
/// <param name="e"></param>
internal override void OnOwnerChanged(EventArgs e)
{
foreach (T item in this)
{
item.Module = Owner;
}
base.OnOwnerChanged(e);
}
/// <summary>
/// Overriden.
/// </summary>
/// <param name="index"></param>
/// <param name="item"></param>
protected override void InsertItem(int index, T item)
{
base.InsertItem(index, item);
item.Module = Owner;
}
/// <summary>
/// Overriden.
/// </summary>
/// <param name="index"></param>
protected override void RemoveItem(int index)
{
T oldItem = this[index];
base.RemoveItem(index);
oldItem.Module = null;
}
/// <summary>
/// Overriden.
/// </summary>
/// <param name="index"></param>
/// <param name="item"></param>
protected override void SetItem(int index, T item)
{
T oldItem = this[index];
base.SetItem(index, item);
oldItem.Module = null;
item.Module = Owner;
}
/// <summary>
/// Overriden.
/// </summary>
protected override void ClearItems()
{
// Not terribly efficient but it's exception safe.
List<T> oldList = new List<T>(this);
base.ClearItems();
foreach (T item in oldList)
{
item.Module = null;
}
}
#endregion
}
}