C# 结构图->;Lamar.NET核心3.1服务创建不起作用

C# 结构图->;Lamar.NET核心3.1服务创建不起作用,c#,inversion-of-control,structuremap,asp.net-core-3.1,lamar,C#,Inversion Of Control,Structuremap,Asp.net Core 3.1,Lamar,我正在尝试在最新的dotnet核心版本(3.1)上从StructureMap迁移到Lamar(4.1.0) 这个项目在切换到Lamar之前就已经开始了,但是已经发生了太多的变化,我已经失去了一些联系 问题? 扫描发生后,如何使用已扫描对象的构造函数创建对象的实例。我知道StructureMap有点不同,但这段代码以前是有效的 代码如下: Startup.cs(尝试新的Lamar) var容器=新容器(cfg=> { cfg.Scan(扫描器=> { scanner.AssembliesAndE

我正在尝试在最新的dotnet核心版本(3.1)上从StructureMap迁移到Lamar(4.1.0)

这个项目在切换到Lamar之前就已经开始了,但是已经发生了太多的变化,我已经失去了一些联系

问题?
扫描发生后,如何使用已扫描对象的构造函数创建对象的实例。我知道StructureMap有点不同,但这段代码以前是有效的

代码如下:

Startup.cs(尝试新的Lamar)


var容器=新容器(cfg=>
{
cfg.Scan(扫描器=>
{
scanner.AssembliesAndExecutablesFromApplicationBaseDirectory(a=>a.FullName.Contains(“Project.Name.Here”);
scanner.WithDefaultConventions();
scanner.SingleImplementationsOfInterface();
});
cfg.For()
.Use(新的ServerInformationDataAccess(Configuration.GetConnectionString(DbConnectionKey),Container.GetInstance());
Startup.cs(运行正常的旧版本)

新的Lamar(4.1)不再允许我创建没有参数的文件

尝试了所有的实例化,但都不起作用……所以我来了

var container=newcontainer();
container.Configure(cfg=>
{
cfg.Scan(s=>
{
s、 AssembliesAndExecutablesFromApplicationBaseDirectory(a=>a.FullName.Contains(“Project.Name.Here”);
s、 使用默认约定();
s、 SingleImplementationsOfInterface();
});
cfg.For()
.Use(sida=>newserverinformationdataaccess(Configuration.GetConnectionString(DbConnectionKey),container.GetInstance());
Program.cs


公共课程
{
公共静态void Main(字符串[]args)
{
CreateHostBuilder(args.Build().Run();
}
公共静态IHostBuilder CreateHostBuilder(字符串[]args)=>
Host.CreateDefaultBuilder(args)
.UseLamar()
.ConfigureWebHostDefaults(webBuilder=>
{
webBuilder.UseStartup();
});
}

在这种情况下,
用户充当工厂代表

//...

cfg.For<IServerInformationDataAccess>()
    .Use<ServerInformationDataAccess>(c => { //<-- c in this case is a container context
        var connectionString = Configuration.GetConnectionString(DbConnectionKey);
        var mapper = c.GetInstance<IMapper>();
        return new ServerInformationDataAccess(connectionString, mapper);
    });

//...
/。。。
cfg.For()
.Use(c=>{//