簡體   English   中英

使用Microsoft Unity和繼承的接口解析類型

[英]Resolving type with Microsoft Unity and inherited interfaces

我有這個類和接口

public interface IA{
  void Load();
}

public interface IB : IA{
}

public class B : IB{
   public void Load(){
      //some code
   }
}

我注冊IB類型B

Microsoft UnityIB解析為正確的類型B ,但是當我嘗試調用Load時,它顯示錯誤IB does not contain a definition for 'Load'

更新資料

這是我的統一配置

var unityContainer = new UnityContainer();

unityContainer.RegisterType<IB, B>();

var obj = unityContainer.Resolve<IB>();
obj.Load()

IB不包含Load()的定義,但是IA包含,因此您必須通過統一將IA解析為B,或者一旦解析IB,將其轉換為IA。

更新1:我必須在這里與其他人達成共識,OP代碼可以在Unity上正常工作並正確解析(已通過.NET 4.5.2和Unity 2.1.505.2測試)。 我不確定為什么以上建議解決了OP問題,因此原始問題中必須省略一些細節。

更新2:基於@will的https://dotnetfiddle.net/FoYQSM工作小提琴

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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