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(); } } }