我想與我的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類的原始開發人員。他出於充分的理由馬上離開了。 –