簡體   English   中英

unity 注冊泛型類型

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM