微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

C#泛型异常,在Autofac.ContainerBuilder.Build上在接口上使用泛型失败

如何解决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 举报,一经查实,本站将立刻删除。