[英]C# Generics Exception, using Generics on Interface failing at Autofac.ContainerBuilder.Build()
我相信我已經正確定義了所有接口注冊,但是當我調用時出現異常
container = builder.Build();
例外:
'Common.RpcServer`2[Logic.Engine, Messages.Serializer]'
不可分配給服務
'Common.IRpcServer`2[[
Services.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 ]]
還有什么我應該看的來診斷這個嗎?
投票關閉為“過於本地化”。
但是,如果您發現這個問題是為了解決您自己的問題,我建議您對所有接口進行三次檢查並確保它們支持 covariance 。
感謝蒂姆·羅傑斯(Tim Rogers )提到這一點,我的代碼庫中出現了一個界面以及另一個非常本地化的問題。
也可以看看:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.