using System.Collections.Generic;
public static void Main()
CollectionTest collection=new CollectionTest();
ItemDelgateTest dItem1=new ItemDelgateTest(){Name="委托项1"};
ItemDelgateTest dItem2=new ItemDelgateTest(){Name="委托项2"};
collection.AddDelegateItem(dItem1);
collection.AddDelegateItem(dItem2);
ItemModuleTest mItem1=new ItemModuleTest(collection){Name="模块项1"};
ItemModuleTest mItem2=new ItemModuleTest(collection){Name="模块项2"};
collection.AddModuleItem(mItem1);
collection.AddModuleItem(mItem2);
public class CollectionTest
public List<ItemDelgateTest> DelegateItems{get;set;}
public List<ItemModuleTest> ModuleItems{get;set;}
DelegateItems=new List<ItemDelgateTest>();
ModuleItems=new List<ItemModuleTest>();
public void OutputDelegate(ItemDelgateTest item)
Console.WriteLine("委托输出:"+item.Name);
public void OutputModule(ItemModuleTest item)
Console.WriteLine("模块输出:"+item.Name);
public void AddDelegateItem(ItemDelgateTest item)
item.ItemOutput += OutputDelegate;
public void AddModuleItem(ItemModuleTest item)
public delegate void ItemOutput(ItemDelgateTest item);
public class ItemDelgateTest
public string Name{get;set;}
public event ItemOutput ItemOutput;
public class ItemModuleTest
public string Name{get;set;}
public ItemModuleTest(CollectionTest module)
_Module.OutputModule(this);