适配器模式+AutoFac

适配器模式+AutoFac

    interface ICommand
    {
        void Excute();
    }
    class OpenCommand : ICommand
    {
        public void Excute()
        {
            Console.Write("this is Opened");
        }
    }
    class SaveCommand : ICommand
    {
        public void Excute()
        {
            Console.Write("this is Saved");
        }
    }
    class Button
    {
       private ICommand command;
        private string name;
        public Button(ICommand command, string name)
        {
            this.command = command;
            this.name = name;
        }

        public void Click()
        {
            command.Excute();
        }
        public void Print()
        {
            command.Excute();
            Console.WriteLine(" "+ name);
        }
    }

    class Editor
    {
        private IEnumerable<Button> btns;

        public Editor(IEnumerable<Button> btns)
        {
            this.btns = btns;
        }
        public void ClickAll()
        {
            foreach (var item in btns)
            {
                item.Click();
            } 
        }

        public void PrintAll()
        {
            foreach (var item in btns)
            {
                item.Print();
            }
        }

    }


    class Program
    {
        static void Main(string[] args)
        {
            var cotainer = new ContainerBuilder();
            cotainer.RegisterType<OpenCommand>().As<ICommand>().WithMetadata("Name", "Open");
            cotainer.RegisterType<SaveCommand>().As<ICommand>().WithMetadata("Name", "Save");
            //cotainer.RegisterAdapter<ICommand, Button>(cmd => new Button(cmd));
            cotainer.RegisterAdapter<Meta<ICommand>, Button>(cmd => new Button(cmd.Value, (string)cmd.Metadata["Name"]));
            //cotainer.RegisterType<Button>();
            cotainer.RegisterType<Editor>();

            using (var contain=cotainer.Build())
            {
                var editor = contain.Resolve<Editor>();
                editor.PrintAll();
            } 
        }
    }

 

posted @ 2022-05-13 16:16  后跳  阅读(34)  评论(0编辑  收藏  举报