我想与我的WCF数据服务(OData)使用Unity。我有代码看起来像这样:(无论是真实的PatientRepository或伪造的一个,我使用的测试)统一和OData(WCF数据服务)
public class PatientService : DataService<IPatientRepository>
我想团结注入了IPatientRepository在运行时正确的对象
我有完成:
IUnityContainer container = new UnityContainer();
container.RegisterType<IPatientRepository, MyEntities>();
但是当我运行我得到:
服务器遇到错误处理请求。异常消息是'无法创建数据提供者。在'PatientService.PatientService'中为数据源输入'RepositoryInterfaces.IPatientRepository'是抽象的。'
有没有办法注入这种依赖性?或者我必须把真正的课程放在那个地方?
您可以定义DataService,其中T是一个接口。但是,你必须重写CreateDataSource方法并实例化上下文类(实现该接口)。不知道这是否会与注射一起工作。 –
@Vitek:也许如果你重写CreateDataSource,然后在覆盖中使用ServiceLocator?这可能会起作用。 –
尽量避免使用ServiceLocator,请尽量不要使用ServiceLocator。这是一种反模式,如本文所述http://blog.ploeh.dk/2010/02/03/ServiceLocatorisanAnti-Pattern/由Mark Seemann撰写,他是Microsoft Patterns and Practices的ServiceLocator类的原始开发人员。他出于充分的理由马上离开了。 –