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



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

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

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

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

是否存在以下非通用等价物?

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

我没有看到这件事的负担过重。

在发现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>());

参见.Net Fiddle示例

最新更新