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

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

2、引入命名空间

using Autofac;
using Autofac.Configuration;

3、使用

3.1:直接使用

var build = new ContainerBuilder();
build.RegisterType<MemoryCacheManager>();
build.Register<ICacheManager>(c => new MemoryCacheManager()).InstancePerLifetimeScope();

3.2:配置文件使用

//1.在配置文件中配置如下代码 依瓢画葫芦即可

EnterpriseFrame.IService 接口类库
EnterpriseFrame.IService.IAdminService 要注册的接口
EnterpriseFrame.Service 实现接口的命名空间
EnterpriseFrame.Service.AdminService 实现的接口
//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使用构造函数的方式注册

//在Application_Start()中调用
var builder = new ContainerBuilder();
AutofacRegisterController(builder);//注册Controller的构造函数
AutofacRegisterService(builder);//注册使用到的服务

控制器代码:

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方法中可以这样写:

            //方式二
            //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));

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

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Alice

iOS afnetworking最新版报错 没有AFHTTPRequestOperationManager类了

今天开了一个小项目   用的是pod   然后  安装好 Afnetworking之后   发现 AFHTTPRequestOperationManager  ...

4859
来自专栏DannyHoo的专栏

POST上传各种数据类型(包括图片)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010105969/article/details/...

4802
来自专栏Alice

iOS iOS与html进行交互

实现的 效果就是上边那样:首先通过webview 进行网络请求 然后进行显示。          然后点击下一页的按钮 通过js的响应显示另一个网页      ...

39310
来自专栏Core Net

IOS 使用 ZbarSDK 二维码扫描

4187
来自专栏coding...

iOS开发实战-时光记账Demo 网络版效果分析客户端部分服务端部分Demo地址简书主页

user表 相反Tally与Users的关系就是:一对多

942
来自专栏码生

RN ReactNative 使用 MJRefresh 自定义刷新组件

RN 自带的 RefreshControl 是 UIRefreshControl,并且还自己写了自动偏移,存在有时不能回弹和不可以自定义视图的问题

2964
来自专栏GIS讲堂

jquery自定义控件拖拽框dragbox

在做项目的过程中遇到了拖拽框的使用,虽然网上有很多类似的插件,但总归不如自己的好使,于是就自己写了一个,在此总结下来,以便后用。

2972
来自专栏Alice

ios app url scheme跳转到淘宝商品详情页 唤醒app

好的东西就应该大家一块分享。 今天项目中要求,类似于启动页是淘宝的广告,然后点击广告,跳转到淘宝的详情页。 实现这个要求我是各种百度,不过最后发现呢,大部分东西...

1.1K6
来自专栏陈满iOS

iOS开发·第三方网络下载处理框架:AFNetworking网络下载处理(官方文档翻译篇)

它服从<NSURLSessionTaskDelegate>,<NSURLSessionDataDelegate>,<NSURLSessionDownloadDe...

1923
来自专栏小樱的经验随笔

hihoCoder #1094 : Lost in the City(枚举,微软苏州校招笔试 12月27日 )

#1094 : Lost in the City 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 Little Hi gets l...

3227

扫码关注云+社区

领取腾讯云代金券