AutoFac 简单好用的IOC


0. 安装autofac的nuget




1. 准备测试接口和类


class BallGame : IPlay
    {
        public void Do()
        {
            Console.WriteLine("ball game");
            Console.Read();
        }
    }


    class ComputerGame : IPlay
    {
        public void Do()
        {
            Console.WriteLine("computer game.");
            Console.Read();
        }
    }


    interface IPlay
    {
        void Do();
    }



2. 编写autofac模块
class PlayModule : Module
    {
        protected override void Load(ContainerBuilder builder)
        {
            builder.RegisterType(typeof(ComputerGame)).As(typeof(IPlay)).InstancePerLifetimeScope();
        }
    }




这样的设计是主张模块化编程,把职责隔离到不同的dll,这样之后更新起来只需要替代指定dll即可。


3. 注册autofac模块,运行测试


var builder = new ContainerBuilder();
builder.RegisterModule(new PlayModule());
var container = builder.Build();
//container.Resolve().Do();
using (var scope = container.BeginLifetimeScope())
{
      var play = scope.Resolve();
      play.Do();
}



先创建一个builder,然后注册模块,最后builder调用Build函数返回container对象。
接下来可以选择性的控制对象的生命周期。


4.完成测试。

你可能感兴趣的:(c#,编程)