如何解决C#泛型异常,在Autofac.ContainerBuilder.Build上在接口上使用泛型失败
我相信我已经正确定义了所有接口注册,但是在致电时会遇到异常container = builder.Build();
例外:
\'Common.RpcServer`2 [Logic.Engine,Messages.Serializer] \'
无法分配给服务
\'Common.IRpcServer`2 [[
服务.IEngine,合同,
版本= 1.0.0.0,文化=中性,
PublicKeyToken = null],[Messages.ISerializer,
合同,版本= 1.0.0.0,
文化=中立,
PublicKeyToken = null]] \'。
我有一个非常简单的IEngine和ISerializer的注册代码(分别是一个和一个都不相关)。
RpcServer稍微复杂一点,但是它的所有依赖关系看起来都可以很好地解决。
builder.Register(c =>
new RpcServer<Engine,Serializer>(
c.Resolve<ISubscription>(),c.Resolve<IService>() as Engine,c.Resolve<ISerializer>() as Serializer)
).As<IRpcServer<IService,ISerializer>>();
除了例外,还是方括号的嵌套,我应该关注版本列表吗?
RpcServer`2 [Logic.Engine,Messages.Serializer]
与
IRpcServer`2 [[Services.IEngine],[Messages.ISerializer]]
我还有什么需要寻找的诊断方法?
解决方法
投票以“太本地化”关闭。
但是,如果您发现此问题是为了解决自己的问题,我建议对所有接口进行三重检查,并确保它们支持协方差。
感谢蒂姆·罗杰斯(Tim Rogers)提到这一点,我的代码库中的一个界面以及另一个非常本地化的问题都得以解决。
也可以看看:
stackoverflow.com/questions/245607/如何在c-4-0中实现通用协方差对立方差
stackoverflow.com/questions/2662369/covariance-and-contravariance-real-world-example
stackoverflow.com/questions/3445631/仍然混淆了协方差和相反方差输入
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。