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