繁体   English   中英

如何为带有参数的非泛型基类的泛型类声明构造函数

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

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM