完善主體資料,免費(fèi)贈(zèng)送VIP會(huì)員!
* 主體類型
* 企業(yè)名稱
* 信用代碼
* 所在行業(yè)
* 企業(yè)規(guī)模
* 所在職位
* 姓名
* 所在行業(yè)
* 學(xué)歷
* 工作性質(zhì)
請先選擇行業(yè)
您還可以選擇以下福利:
行業(yè)福利,領(lǐng)完即止!

下載app免費(fèi)領(lǐng)取會(huì)員

NULL

ad.jpg

二次開發(fā)教程:C# 泛型弱事件管理器

發(fā)布于:2019-07-25 15:09:47

網(wǎng)友投稿

更多

,net 4.5 為弱事件提供了新的實(shí)現(xiàn)。泛型類 WeakEventManager<TEventSource, TEventArgs>,它派生自基類WeakEventManager,


大大的簡化了弱事件的處理


        static void Main(string[] args)

        {

            CarDealer dealer = new CarDealer();

            Consumer micheal = new Consumer("Micheal");


//是用下面兩種訂閱事件效果不一樣

            WeakEventManager<CarDealer, CarInfoEventArgs>.AddHandler(dealer, "NewCarInfo", micheal.NewCarIsHere);

            //dealer.NewCarInfo += micheal.NewCarIsHere; 

            dealer.NewCar("Ferrari");

            micheal = null;

            GC.Collect();

            dealer.NewCar("Ferrari");

            Console.ReadLine();

        }

    }


    public class CarInfoEventArgs:EventArgs

    {

        public CarInfoEventArgs(string car)

        {

            Car = car;

        }


        public string Car { get; private set; } 

    }


    public class CarDealer

    {

        public event EventHandler<CarInfoEventArgs> NewCarInfo;

        public void NewCar(string car)

        {

            Console.WriteLine("CarDealer, new car {0}", car);

            RaiseNewCarInfo(car);

        }

        protected virtual void RaiseNewCarInfo(string car)

        {

            if(NewCarInfo!=null)

            {

                NewCarInfo(this, new CarInfoEventArgs(car));

            }

        }

    }

    public class Consumer

    {

        private string _name = string.Empty;

        public Consumer(string name)

        {

            _name = name;

        }


        public void NewCarIsHere(object sender,CarInfoEventArgs e)

        {

            Console.WriteLine("{0}:Car {1} is new", _name, e.Car);

        }

    }

本文版權(quán)歸腿腿教學(xué)網(wǎng)及原創(chuàng)作者所有,未經(jīng)授權(quán),謝絕轉(zhuǎn)載。

未標(biāo)題-1.jpg

上一篇:二次開發(fā)教程:Revit開發(fā)之管段

下一篇:二次開發(fā)教程:Revit開發(fā)之管道的布管系統(tǒng)配置

60acb4e0ef112.png