[英]How do I declare the constructor for a generic class with a generic base class with parameters?
[英]How do I declare the constructor for a generic class with a non-generic base class with parameters
我有一个非派生的通用类的基类。 IoC框架提供了AbstractRepository和ILoggingManager。
基类
public abstract class EventHandlerBase
: AbstractDataProvider
, IEventHandler
{
public EventHandlerBase(
AbstractRepository data,
ILoggingManager loggingManager
)
: base(data, loggingManager)
{
}
}
派生类
public abstract class EventHandlerBase<TDetail>
: EventHandlerBase
where TDetail : Contracts.DeliveryItemEventDetail
{
}
我想在派生类中声明一个构造函数,该构造函数将调用非通用基类,但我不知道其语法。
public class EventHandlerBase(AbstractRepository data,
ILoggingManager loggingManager)
: base(data, loggingManager)
{
// Whatever
}
应该工作正常。 如果没有,您能证明您遇到的问题吗?
编辑:我认为整个基类的事情可能在这里笼罩着问题。 当您以通用类型声明构造函数时,无需指定类型参数。 例如, List<T>
类似于:
public class List<T>
{
public List()
{
}
}
这个想法是,在类声明中, T
是已知的-仅在要添加更多类型参数时才指定类型参数,例如,对于像ConvertAll
这样的通用方法。
是否应该更像是:
public abstract class EventHandlerBase<TDetail> : EventHandlerBase
where TDetail : Contracts.DeliveryItemEventDetail
{
public EventHandlerBase(AbstractRepository data, ILoggingManager loggingManager)
: base(data, loggingManager)
{
// Initialize generic class
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.