【问题标题】:IAbpSession, ILogger, UserManager, How to inject these object in normal C# classesIAbpSession、ILogger、UserManager、如何在普通 C# 类中注入这些对象
【发布时间】:2017-08-31 13:36:38
【问题描述】:

是否可以在普通 C# 类中获取以下对象的实例:

IAbpSession、ILogger、UserManager、IConfigurationRoot

我想在我的自定义类中使用不是从其他基类派生的对象类型。如果不可能,我应该派生什么基类以将这些对象注入到我的类中,而不是“MVC 控制器”、“Web API 控制器”和“应用程序服务”?

【问题讨论】:

    标签: asp.net-core-1.1 aspnetboilerplate


    【解决方案1】:

    要在普通(您的自定义)C# 类中使用这些接口,您必须使用依赖注入。首先,您需要在依赖注入系统中注册您的自定义类。这很容易;只需从 ITransientDependency(或 ISingletonDependency)继承您的自定义类,然后注入 IAbpSession 或任何注册到依赖注入系统的类。让我给你看一个基本的例子;

    using Abp.Dependency;
    using Abp.Runtime.Session;
    using Castle.Core.Logging;
    using Microsoft.Extensions.Configuration;
    using MyCompanyName.AbpZeroTemplate.Authorization.Users;
    
    public class MyCustomClass : ITransientDependency
    {
        private readonly IAbpSession _abpSession;
        private readonly ILogger _logger;
        private readonly UserManager _userManager;
        private readonly IConfigurationRoot _configurationRoot;
    
        public MyCustomClass(IAbpSession abpSession, 
                             ILogger logger, 
                             UserManager userManager, 
                             IConfigurationRoot configurationRoot)
        {
            _abpSession = abpSession;
            _logger = logger;
            _userManager = userManager;
            _configurationRoot = configurationRoot;
        }
    
        public async void CreateUser()
        {
            await _userManager.CreateAsync(new User
            {
                Name = "Alper",
                TenantId = _abpSession.TenantId
            }, "1234567");
    
    
            var myConnectionString = _configurationRoot.GetConnectionString("Default");
            _logger.Debug("A new user is created using this connection string : " + myConnectionString);
        }
    }
    

    我尝试使用你提到的所有接口。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-01-18
      • 2021-11-27
      • 1970-01-01
      • 1970-01-01
      • 2016-07-14
      • 1970-01-01
      相关资源
      最近更新 更多