这让我疯了......
两个正在进行的组装/项目:
基础设施项目,其中包含界面:
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中?在运行时,所有程序集都被加载,所以它应该不重要,对吗?
感谢您的任何想法!