上記のコメントに基づいて、次のことを想定します。
public class Manager {
public Int32 ManagerId { get; set; }
public String ManagerName { get; set; }
}
public class Designer {
public Int32 DesignerId { get; set; }
public Int32 ManagerId { get; set; }
public String DesignerName { get; set; }
}
特定のデザイナーのマネージャーが静的であると仮定すると、マネージャー クラスを次のように変更します。
public class Manager {
private List<Designer> _designers = new List<Designer>();
public Int32 ManagerId { get; set; }
public String ManagerName { get; set; }
public IList<Designer> Designers { get { return _designers; } }
}
次に、マネージャーをKeyedCollectionのサブクラスに格納します。
using System.Collections.ObjectModel;
public class ManagerList : KeyedCollection<Int32, Manager> {
protected override int GetKeyForItem(Manager item)
{
return item.ManagerId;
}
}
// Somewhere else
var managerList = new ManagerList();
var someManager = new Manager { ManagerId = 1, ManagerName="Bill Lundberg" };
managerList.Add(someManager);
foreach (var designer in myDesigners)
managerList[designer.ManagerId].Designers.Add(designer);
もちろん、これらすべては、デザイナーの管理の変更を考慮していません。それが私が尋ねた理由です:-)