2016-02-05 49 views
5

我打算將我的系統移至通用服務層。如何註冊通用服務

public interface IAbcService<TEntity> where TEntity : class 

public class AbcService<TEntity> : IAbcService<TEntity> where TEntity : class 

我嘗試了一些東西,但它不起作用。

services.AddTransient<typeof(IAbcService<MyEntity>), AbcService(); 
.... 
.... 
.... 

我正在使用我的一些實體,並試圖將其添加到屬性中。

如何在asp.net核心中註冊一個通用服務?

+0

如果答案滿足您的需求,請將其標記爲已接受。如果沒有,請評論答案或編輯您的問題。 – JonTheMon

回答

-2

你試過

services.AddTransient < IAbcService <>,AbcService>()

+0

這將不會編譯。在引用開放泛型時,您必須通過'typeof()'使用運行時'System.Type'實例。 – Technetium

7

我想之前嘗試同樣的事情,我已經得到它像這樣工作:

services.AddTransient(typeof(IAbcService<>), typeof(AbcService<>)); 
services.AddTransient(typeof(IAbcService<Person>), typeof(AbcService<Person>)); 

不要介意不同的結構,這是通過參數在方法中註冊。

詳細說明,如上例所示,使用新的DNX框架包,我們現在可以註冊開放式和封閉式泛型。 試一下,兩條線都可以工作。