所有仿制药的州实施类型一次?

时间:2014-12-02 17:34:57

标签: c# generics interface

我有以下课程签名:

public class CostZoneEffectivityViewModel : CustomerViewModel, IViewModel, ISQLFilter<CostZoneEffectivityView>, IRefresh<CostZoneEffectivityView>, ITotal<CostZoneEffectivityView>

注意最后三个接口的Type参数是如何CostZoneEffectivityView,它在名称和类签名中都相当长。

我想知道是否有办法告诉它一次让眼睛更容易(即缩短它)?

也许是这样的:

ISQLFilter<T>, IRefresh<T>, ITotal<T> where T is CostZoneEffectivityView

有什么能让我在不改变功能的情况下缩短班级签名吗?

1 个答案:

答案 0 :(得分:3)

您可以使用using alias directive

为类型添加别名
using CZEV = CostZoneEffectivityView;    
...    
public class CostZoneEffectivityViewModel : CustomerViewModel, 
         IViewModel, 
         ISQLFilter<CZEV>, 
         IRefresh<CZEV>, 
         ITotal<CZEV>

这是个好主意吗?可能不是。

如果您经常将这3个接口一起使用,您也可以考虑将它们组合在一起:

public interface ICombinedFunctionality<T> // bad name, but you get the idea
            : ISQLFilter<T>, 
             IRefresh<T>, 
             ITotal<T>
{}

然后,您只需要在课程定义上使用一次:

public class CostZoneEffectivityViewModel : CustomerViewModel, 
         IViewModel, 
         ICombinedFunctionality<CostZoneEffectivityView>
...