0

从“LightInject”迁移到 .netcore DI 容器。

以下 LightInject 相关注册的.netcore DI 容器等效项是什么?

 a. container.RegisterConstructorDependency<IBar>((factory, parameterInfo) => new Bar()); 

 b. container.RegisterInstance<Func<string, string>>
        ((username, password) => new MemCache(userId, password, container.GetInstance<IBusinessLogic>())); 
4

1 回答 1

0

我相信 A 会是这样的:

services.AddTransient<IBar>(container => new Bar());

对于 B,如果您有一个已经存在的实例并且您只想注册,那么您可以执行以下操作:

ISomething somethingInstance = new Something();
services.AddSingleton<ISomething>(somethingInstance);

但看起来你真的想注册一个工厂,所以我建议这样:

services.AddScoped<Func<string, string, MemCache>>(ctx => (username, password) => new MemCache(username, password, ctx.GetRequiredService<IBusinessLogic>()));
于 2021-11-25T07:32:57.677 回答