.net core控制台引用abp依赖注入及AbpModule
- 创建一个.net core3.1控制台应用程序
-
添加引用
<PackageReference Include="Microsoft.Extensions.Hosting" Version="3.1.22" />
<PackageReference Include="Volo.Abp.Core" Version="3.3.2" /> - 添加接口 ITestService,类TestService实现方法SayHello
1234
internal
interface
ITestService : ITransientDependency
{
string
SayHello();
}
- Program类:
123456789101112131415161718
internal
class
Program
{
static
void
Main(
string
[] args)
{
CreateHostBuilder(args).Build().Run();
}
internal
static
IHostBuilder CreateHostBuilder(
string
[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureServices((hostingContext, service) =>
{<br>
//AbpApplicationFactory 用于创建应用程序并加载所有以AppModule作为启动模块的模块. Initialize()方法启动应用程序.
using
(
var
application = AbpApplicationFactory.Create<AbpDependencyInjectionDemoModule>())
{
application.Initialize();
//启动abp
Console.WriteLine(
"DoWork..."
);
}
});
}
- 添加class AbpDependencyInjectionDemoModule
123456789101112131415161718192021222324
public
class
AbpDependencyInjectionDemoModule : AbpModule
{
/// <summary>
/// service注入
/// </summary>
/// <param name="context"></param>
public
override
void
ConfigureServices(ServiceConfigurationContext context)
{
var
services = context.Services;
Console.WriteLine(
"注入Services"
);
}
/// <summary>
/// 程序初始化
/// </summary>
/// <param name="context"></param>
public
override
void
OnApplicationInitialization(ApplicationInitializationContext context)
{
var
serviceProvider = context.ServiceProvider;
var
testservice = serviceProvider.GetService<ITestService>();
Console.WriteLine(testservice.SayHello());
}
}
- 运行 有打印Hello,说明注入ITestService服务成功
- 其他程序集使用abp依赖注入,先添加程序集module加载
123
[DependsOn(
typeof
(ApplicationModule)
)]
-
abp是通过加载module所在程序集,注入继承ITransientDependency等相关接口的类或接口
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构