簡體   English   中英

C# Generics 異常,在接口上使用 Generics 在 Autofac.ContainerBuilder.Build() 失敗

[英]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]]'。

我有非常簡單的IEngineISerializer注冊代碼(分別是一個和無依賴項)。

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM