使用Microsoft Unity和继承的接口解析类型

时间:2016-03-29 20:52:26

标签: c# unity-container

我有这个类和接口

public interface IA{
  void Load();
}

public interface IB : IA{
}

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

我为类型IB

注册了B

Microsoft Unity解析IB以更正B类型,但当我尝试调用加载时,它会显示错误IB does not contain a definition for 'Load'

更新

这是我的统一配置

var unityContainer = new UnityContainer();

unityContainer.RegisterType<IB, B>();

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

1 个答案:

答案 0 :(得分:1)

IB不包含Load()的定义,但是IA确实如此,因此您必须通过统一解析IA到B,或者一旦解析IB,将其转换为IA。

更新1:我必须同意其他人的观点,即OP代码可以正常工作并使用Unity正确解析(使用.NET 4.5.2和Unity 2.1.505.2进行测试)。我不确定为什么我的上述建议解决了OP问题,因此原始问题中必须省略一些细节。

更新2:基于@ will documentation

的工作小提琴