[英]Unity register generic type
如何注冊通用接口如下圖:
public interface ISigQuery<T> where T : SigReadModel, new()
public class SigQuery : ISigtQuery<SigReadModel>
{
}
我嘗試注冊如下:
.RegisterType(typeof(ISigQuery<>), typeof(SigQuery))(new ContainerControlledLifetimeManager())
我得到錯誤:
方法名稱預期
由於SigQuery
實現了ISigtQuery<SigReadModel>
,您必須通過ISigtQuery<T>
封閉通用版本注冊它:”
.RegisterType(
typeof(ISigQuery<SigReadModel>),
typeof(SigQuery),
new ContainerControlledLifetimeManager());
你可以使用通用的RegisterType
重載:
.RegisterType<ISigQuery<SigReadModel>, SigQuery>(
new ContainerControlledLifetimeManager());
根據RegisterType 的用法,您需要更改:
.RegisterType(typeof(ISigQuery<>), typeof(SigQuery))(new ContainerControlledLifetimeManager())
到
.RegisterType(typeof(ISigQuery<>), typeof(SigQuery), new ContainerControlledLifetimeManager())
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.