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示例