前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >个人项目框架搭建 -- Autofac简单使用记录

个人项目框架搭建 -- Autofac简单使用记录

作者头像
易墨
发布2018-09-14 15:28:37
6560
发布2018-09-14 15:28:37
举报

1、添加autofac相关程序集/使用Nuget

2、引入命名空间

代码语言:javascript
复制
using Autofac;
using Autofac.Configuration;

3、使用

3.1:直接使用

代码语言:javascript
复制
var build = new ContainerBuilder();
build.RegisterType<MemoryCacheManager>();
build.Register<ICacheManager>(c => new MemoryCacheManager()).InstancePerLifetimeScope();

3.2:配置文件使用

代码语言:javascript
复制
//1.在配置文件中配置如下代码 依瓢画葫芦即可

EnterpriseFrame.IService 接口类库
EnterpriseFrame.IService.IAdminService 要注册的接口
EnterpriseFrame.Service 实现接口的命名空间
EnterpriseFrame.Service.AdminService 实现的接口
代码语言:javascript
复制
//2.使用
var build = new ContainerBuilder();
build.RegisterModule(new ConfigurationSettingsReader("autofac"));
using (var container = build.Build())
{
    var service = container.Resolve<IAdminService>();
    var result = service.CheckAdminPwd("admin", "123456");
    Assert.IsTrue(result);
}

3.3在mvc的controller使用构造函数的方式注册

代码语言:javascript
复制
//在Application_Start()中调用
var builder = new ContainerBuilder();
AutofacRegisterController(builder);//注册Controller的构造函数
AutofacRegisterService(builder);//注册使用到的服务

控制器代码:

代码语言:javascript
复制
public class TestController : Controller
{
    private ILogger _logger;
    private ICacheManager _cacheManager;
    public TestController(ILogger logger,ICacheManager cache)
    {
        _logger = logger;
        _cacheManager = cache;
    }
    private static string TEST_CACHE_KEY = "TEST_CACHE_KEY";
    public ActionResult Caching()
    {

        string time = _cacheManager.Get<string>(TEST_CACHE_KEY, 1, () => { return DateTime.Now.ToString(); });
        return Content(time);
    }
}

 Global.asax Application_Start方法中可以这样写:

代码语言:javascript
复制
            //方式二
            //var builder = new ContainerBuilder();
            //builder.RegisterType<FileLogger>();
            //builder.Register<ILogger>(c => new FileLogger()).InstancePerLifetimeScope();

            //var assembly = Assembly.GetExecutingAssembly();
            //builder.RegisterControllers(assembly).PropertiesAutowired();//PropertiesAutowired();属性注入
            //var container = builder.Build();
            //DependencyResolver.SetResolver(new AutofacDependencyResolver(container));

文中若有错误和不足之处,还望路过的道友指出。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2016-04-09 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档