IAbpSession、ILogger、UserManager,如何在普通 C# 中注入这些对象 类
IAbpSession, ILogger, UserManager, How to inject these object in normal C# classes
是否可以在普通 C# 中获取以下对象的实例classes:
IAbpSession、ILogger、UserManager、IConfigurationRoot
我想在我的自定义 classes 中使用不是从其他基础 classes 派生的对象类型。如果不可能,我应该从什么基础 class 派生我的 classes 以将这些对象注入我的 classes 而不是 "MVC controllers"、"Web API controllers" 和 [=19] =]?
要在正常(您的自定义)C# classes 中使用这些接口,您必须使用依赖注入。首先,您需要在依赖注入系统中注册您的自定义 class。这很容易;只需从 ITransientDependency(或 ISingletonDependency)继承您的自定义 class,然后注入 IAbpSession 或注册到依赖注入系统的任何 class。让我向您展示一个基本示例;
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);
}
}
我尝试使用您提到的所有接口。
是否可以在普通 C# 中获取以下对象的实例classes:
IAbpSession、ILogger、UserManager、IConfigurationRoot
我想在我的自定义 classes 中使用不是从其他基础 classes 派生的对象类型。如果不可能,我应该从什么基础 class 派生我的 classes 以将这些对象注入我的 classes 而不是 "MVC controllers"、"Web API controllers" 和 [=19] =]?
要在正常(您的自定义)C# classes 中使用这些接口,您必须使用依赖注入。首先,您需要在依赖注入系统中注册您的自定义 class。这很容易;只需从 ITransientDependency(或 ISingletonDependency)继承您的自定义 class,然后注入 IAbpSession 或注册到依赖注入系统的任何 class。让我向您展示一个基本示例;
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);
}
}
我尝试使用您提到的所有接口。