gpt4 book ai didi

c# - Unity RegisterType 用于自身接受服务的构造函数

转载 作者:行者123 更新时间:2023-11-30 22:34:30 26 4
gpt4 key购买 nike

我有两个服务 IServiceA 和 IServiceB。 IServiceB 的具体实现如下所示:

public class ServiceB : IServiceB {
public ServiceB(string path, IServiceA serviceA) { ... }
}

所以我需要传入一个字符串和一个ServiceA。

我有点不知道该怎么做。我现在有这个:

var path = _config.Path;
container.RegisterType<IServiceA, ServiceA>();
container.RegisterType<IServiceB, ServiceB>(
new InjectionConstructor(path, container.Resolve<IServiceA>());

这显然是错误的,因为我实际上是在实例化一个 ServiceA 并向所有 ServiceB 注册一个实例。

如何让 Unity 始终解析"new"ServiceA?我尝试从 RegisterType 中删除 IServiceA,这引发了一个异常,告诉我没有 ctor(string),这是正确的,因为它是一个 ctor(string,IServiceA) .

最佳答案

它没有特别详细的记录,但这似乎有效:

container.RegisterType<IServiceA, ServiceA>();
container.RegisterType<IServiceB, ServiceB>(
new InjectionConstructor(path, new ResolvedParameter<IServiceA>()));

我建议在将其用于生产之前对其进行测试。

关于c# - Unity RegisterType 用于自身接受服务的构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7800882/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com