C# 结构图->;Lamar.NET核心3.1服务创建不起作用
我正在尝试在最新的dotnet核心版本(3.1)上从StructureMap迁移到Lamar(4.1.0) 这个项目在切换到Lamar之前就已经开始了,但是已经发生了太多的变化,我已经失去了一些联系 问题?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
扫描发生后,如何使用已扫描对象的构造函数创建对象的实例。我知道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=>{//