繁体   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