如何解决Unity InjectionConstructor 升级到 5.11 后无法注册类型
将 Unity 从 4.0 升级到 5.11 后,我们收到以下异常:
Unity.ResolutionFailedException: The type System.String cannot be constructed. You must configure the container to supply this value.
Exception occurred while:
while resolving: String
for parameter: assemblyName
on constructor: CertificateDescriptor(String assemblyName,String certificateName,String password,String identity)
while resolving: CertificateDescriptor
for parameter: certificateDescriptor
on constructor: ServiceAnnouncementHost`1(CertificateDescriptor certificateDescriptor,Int16 announcementPort,ITaskController taskController)
while resolving: ServiceAnnouncementHost`1
for parameter: serviceAnnouncementHost
on constructor: InstrumentObserver(ServiceAnnouncementHost`1 serviceAnnouncementHost,ITaskController taskController)
mapped to: IInstrumentObserver
for parameter: instrumentObserver
我有以下构造函数:
public ServiceAnnouncementHost(CertificateDescriptor certificateDescriptor,short announcementPort,ITaskController taskController)
我在单元容器中注册了ServiceAnnouncementHost并提供
container.RegisterType<IServiceAnnouncementHost<TEventService>,ServiceAnnouncementHost<TEventService>>(
new ContainerControlledLifetimeManager(),new InjectionConstructor(
new InjectionParameter(CertificateMapper.GetClientCertificateDescriptor<TEventService>()),new InjectionParameter(fusionServiceSettings.AnnouncementPort),container.Resolve<ITaskController>()));
行:
InjectionParameter(CertificateMapper.GetClientCertificateDescriptor<TEventService>())
创建一个 CertificateDescriptor 对象并将其传递给 ServiceAnnouncementHost 的构造函数,但容器仍然抱怨它无法解析它。
5.11 中哪些更改可能会导致异常?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。