2009-02-05 66 views
1

我有一个基类,它与派生泛型类是非泛型的。 AbstractRepository和ILoggingManager由IoC框架提供。如何为具有参数的非泛型基类声明泛型类的构造函数

基类

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 
{ 
} 

我想宣布在派生类的构造函数,将调用非泛型基类,但我不知道语法。

回答

4

岂不是更象:

public abstract class EventHandlerBase<TDetail> : EventHandlerBase  
    where TDetail : Contracts.DeliveryItemEventDetail 
{ 
    public EventHandlerBase(AbstractRepository data, ILoggingManager loggingManager) 
    : base(data, loggingManager) 
    { 
    // Initialize generic class 
    } 
} 
4
public class EventHandlerBase(AbstractRepository data, 
           ILoggingManager loggingManager) 
    : base(data, loggingManager) 
{ 
    // Whatever 
} 

应该可以正常工作。如果没有,你能否展示你遇到的问题?

编辑:我认为整个基类的事情可能会混淆这个问题。当你声明一个泛型类型的构造函数时,你不需要指定类型参数。例如,List<T>看起来是这样的:

public class List<T> 
{ 
    public List() 
    { 
    } 
} 

的想法是,在类声明中,T已经知道 - 你只有当你想添加更多的人,例如指定类型参数用于像ConvertAll这样的通用方法。

+0

所以,你在暗示我从我的派生类中删除的通用部分? – 2009-02-05 16:49:39

+0

只是在构造函数中。构造函数本身不是通用的。我会将其添加到我的答案中。 – 2009-02-05 16:50:42

相关问题