首页/技术分享

二次开发教程:C# 泛型弱事件管理器

发布于:2019-07-25 15:09:47
3647人 分享

,net 4.5 为弱事件提供了新的实现。泛型类 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);

        }

    }

转载请注明来源本文地址:https://www.tuituisoft/blog/3190.html

上一篇:

二次开发教程:Revit开发之管段

下一篇:

二次开发教程:Revit开发之管道的布管系统配置