我正在使用實體框架(EF)的域驅動設計技術,我的一些類沒有公共無參數構造函數。我有一個適用於多個類的服務,其中一些是Entity Framework,另一些是帶有公共參數的DTO。獲取Autofac注入接口的解析類型
因此,我會喜歡Autofac將已解析的接口類型注入到服務ctor中,並且我自己處理創建/處理已解析的TInterface類的問題。
class MyServiceClass<TInterface> : IMyServiceClass<TInterface>
{
private Type _classType;
public MyServiceClass(Type resolvedTypeOfTInterface)
{
_classType = resolvedTypeOfTInterface;
}
}
當Autofac解析IMyServiceClass<TInterface>
它創建一個類MyServiceClass<TInterface>
類型的,這是好的。但是我也想知道接口TInterface解決的類的類型。
我可以看到如何通過this stackoverflow answer直接訪問Autofac來獲得課程,但這意味着直接使用Autofac容器,這聽起來不是一個好主意。
任何人都可以建議通過在容器構建時設置一些方法/工廠注入解決類型的TInterface的方式嗎?
您必須在組合根目錄中配置autofac容器。在這種情況下,autofac將處理創建類。你不能讓autofac創建這個類,你自己處理創建這個類。 – Kenneth 2014-10-01 09:01:36
hi @Kenneth。我認爲我的解釋不夠清楚,所以我已經更新了它。基本上我想要的是TInterface類型的類型,而不是實例。我不能讓Autofac創建它,因爲有時它的構造函數是私有的。如果服務代碼有一個公共無參數構造函數或調用額外的代碼來處理給定的DDD類的專用工廠,則可以使用Activator.CreateInstance(type)來創建它。 – 2014-10-01 11:01:53
你可以在構造函數中要求'typeof(TInterface)',不需要注入那個 – Kenneth 2014-10-01 11:32:22