0

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

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

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

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

是否有非通用等价物,例如以下?

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

我没有看到这个超载。

4

1 回答 1

1

在发现 LamarServiceRegistry源自 后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 示例

于 2020-11-10T23:47:03.430 回答