You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在.NET 6控制台应用中使用Lamar依赖注入容器?

.NET 6控制台应用中使用Lamar实现任务运行器

1. 准备项目并安装Lamar

创建.NET 6控制台项目后,通过NuGet安装Lamar包:

dotnet add package Lamar

2. 定义任务接口

声明所有任务必须实现的统一接口,确保执行入口一致:

public interface ITask
{
    void Run();
}

3. 编写具体任务类

实现示例任务类,这里以两个任务为例:

public class SampleTask : ITask
{
    public void Run()
    {
        Console.WriteLine("SampleTask 正在执行...");
    }
}

public class DataSyncTask : ITask
{
    public void Run()
    {
        Console.WriteLine("DataSyncTask 正在执行数据同步操作...");
    }
}

4. 配置Lamar容器并注册任务

在Program.cs中构建Lamar容器,通过扫描程序集自动注册所有ITask实现,新增任务无需手动修改注册逻辑:

using Lamar;
using System.Reflection;

// 初始化Lamar容器
var container = new Container(config =>
{
    // 扫描当前程序集,自动注册所有实现ITask的类型
    config.Scan(scanner =>
    {
        scanner.Assembly(Assembly.GetExecutingAssembly());
        scanner.AddAllTypesOf<ITask>();
    });
});

5. 处理命令行参数并执行任务

读取命令行传入的类名,从容器中获取对应任务实例并执行,同时增加异常处理:

// 获取命令行参数
var args = Environment.GetCommandLineArgs();
if (args.Length < 2)
{
    Console.WriteLine("请传入要执行的任务类名称");
    return;
}

var targetTaskName = args[1];

try
{
    // 根据类名查找对应的任务类型
    var taskType = Assembly.GetExecutingAssembly().GetTypes()
        .FirstOrDefault(t => t.Name.Equals(targetTaskName, StringComparison.OrdinalIgnoreCase));

    if (taskType == null)
    {
        Console.WriteLine($"未找到指定任务类: {targetTaskName}");
        return;
    }

    // 从容器解析实例并执行Run方法
    var task = (ITask)container.GetInstance(taskType);
    task.Run();
}
catch (Exception ex)
{
    Console.WriteLine($"任务执行失败: {ex.Message}");
}

测试运行

比如要执行SampleTask,在命令行输入:

dotnet run SampleTask

即可看到对应的任务执行输出。

内容的提问来源于stack exchange,提问作者geoff swartz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 08:42:05