[英]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 Unity
將IB
解析為正確的類型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.