gpt4 book ai didi

generics - 温莎城堡解析字典<>失败

转载 作者:行者123 更新时间:2023-12-04 06:49:39 26 4
gpt4 key购买 nike

我做了以下事情:

    container.Register(Component.For<Dictionary<string, string>>()
.Instance(ServiceDictionaryInstance)
.Named("serviceDictionary"));

消费组件的类是:
 public class BusinessService : IDecisionFilter
{
private readonly Dictionary<string, string> _ServiceDictionary;

public BusinessService(IOtherInterface otherService, Dictionary<string, string> serviceDictionary)
{
_OtherService = otherService,
_ServiceDictionary = serviceDictionary;
}
}

然后 CaSTLe 无法解析 Dictionary 组件:

失败:NotImplementedException
未实现该方法或操作。
失败:在 CaSTLe.MicroKernel.SubSystems.Conversion.GenericDictionaryConverter.PerformConversion(String value, Type targetType)

但是如果我创建另一个类:
public class DictiornayType : Dictionary<string, string>
{
}

代替原始字典,一切都正确解决。

这与泛型类型有什么关系吗?

请指教。

最佳答案

问题是,字典并不是真正的 component/service .它更像是某个组件/服务的参数。因此,您可以删除字典注册并将字典实例作为参数传递给其注册中的 BusinessService 组件:

container.Register(Component.For<IDecisionFilter>()
.ImplementedBy<BusinessService>()
.DependsOn(new {
serviceDictionary = ServiceDictionaryInstance
}));

有一些谈 removing this difference between parameters and services用于 future 版本的温莎。

关于generics - 温莎城堡解析字典<>失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3304497/

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