使用Lamar DI容器,如何构建具有给定类型的lambda的对象?

Lamar为使用lambda构建对象提供了以下语法:

serviceRegistry.For<ISomeType>().Use(x => { ... });

这将允许您解析ISomeType,该ISomeType将执行注册的委托:

 var someType = container.GetInstance<ISomeType>();

是否存在非通用等价物?

serviceRegistry.For(typeof(ISomeType)).Use(x => { ... });

我没有看到太多的负担。

d276418269 回答:使用Lamar DI容器,如何构建具有给定类型的lambda的对象?

在发现Lamar的ServiceRegistry源自ServiceProvider之后,我意识到可以通过使用ServiceProvider API来实现这一点:

var container = new Container(x => x.Add(new ServiceDescriptor(typeof(string),sp => "test",ServiceLifetime.Singleton)));
Console.WriteLine(container.GetService<string>());

See .Net Fiddle Example

本文链接:https://www.f2er.com/1239899.html

大家都在问