Unity不解决已注册的依赖关系..即使它确实已注册

时间:2010-06-16 16:58:21

标签: dependency-injection unity-container

这让我疯了......

两个正在进行的组装/项目:

基础设施项目,其中包含界面:

  IDtoMapping<in TDto, out TDomain>

一个应用程序项目,引用Infx,带有一个实现:

  PatientMapping : IPatientMapping

...和标记界面,只是为了清楚:

  public interface IPatientMapping : IDtoMapping<PatientDTO, Patient> {}

当应用程序启动时,会运行:

_container.RegisterType<IPatientMapping, PatientMapping> ( new ContainerControlledLifetimeManager () );

这在app项目中通过系统范围的引导过程发生。 (在此线运行之后,(通过手表),我可以成功解决它。)

最后,我们尝试解决它(在WCF服务中,在app projec中)

public PatientService ( 
    IPatientRepository patientRepository, 
    ISessionSource session,
    IPatientMapping patientDtoToDomainMapper )
{

..它失败了。使用ResolutionFailedException“无法实例化接口等等。”我在.Resolve调用,注册等处放置了断点。所有内容都按预期命中。但是当应用程序尝试解析/构建WCF服务时,Unity无法解析IPatientMapping参数......它就像忘记了一样。

我很茫然..我升级到Unity 2.0,添加了中间标记界面,删除了通用界面,只是使用了香草一个......都无济于事。 系统中的其他依赖项解析得很好,包括同一个WCF构造函数上的其他参数。

我的直觉告诉我的唯一可能是它与装配有关吗? .Resolve调用是在Infx项目中发生的,但实现实际上存在于app-project中?在运行时,所有程序集都被加载,所以它应该不重要,对吗?

感谢您的任何想法!

0 个答案:

没有答案