博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
using Castle.MicroKernel;
using Castle.MicroKernel.Registration;
using Castle.MicroKernel.SubSystems.Configuration;
using Castle.Windsor;
using Castle.Windsor.Installer;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace castleDemo
{
    class Program
    {
        private static ITest _test;

        static void Main(string[] args)
        {
            WindsorContainer container = WindsorInit.GetContainer();
            _test = container.Resolve<ITest>(new Arguments());
            var result = _test.Add(10, 20);
            Console.WriteLine(result);
           

        }
    }

    public interface ITest
    {
        int Add(int a, int b);
    }

    public class Test : ITest
    {
        public int Add(int a, int b)
        {
            return a + b;
        }
    }

    public class WindsorInstaller : IWindsorInstaller
    {
        public void Install(IWindsorContainer container, IConfigurationStore store)
        {
            //单个注册法,还有其他方式
            //ITest为接口,Test为接口的实现类
            container.Register(Component.For<ITest>().ImplementedBy<Test>());
        }
    }
    public class WindsorInit
    {
        private static WindsorContainer _container;
        public static WindsorContainer GetContainer()
        {
            if (_container == null)
            {
                _container = new WindsorContainer();
                _container.Install(FromAssembly.This());
            }
            return _container;
        }

        public void CloseContex()
        {
            _container.Dispose();
        }
    }
}