具有通用类型的类

时间:2016-04-04 09:47:56

标签: c#

我需要创建两个类,一个采用T,另一个采用List(为简单起见,我省略了一些代码):

Partial declarations of 'TEnvelope<T>' must have the same type parameter names in the same order

我收到错误:

0

有没有办法定义这两种类型的Envelope类?

1 个答案:

答案 0 :(得分:1)

您不能在同一名称空间中声明两个具有相同名称的类。如果你这样做,编译器认为这是一个部分声明(你可以使用partial关键字将类分解为同一程序集中的不同文件)。

我认为课程设计会引导你遇到问题所以我建议创建两个不同的类:

public class Envelope<T> {
    public T Result { get; private set; }
}

public class Envelopes<T> {
   public Paging Paging { get; private set; }
   public List<T> Results { get; private set; }
}

它们都有不同的目的,因此创建两个不同的自然是很自然的:第一个只有一个结果,第二个结果列表和分页。

但如果你真的需要这样做,那么只能选择一个班级:

public class Envelope<T> where T : new() {
    public Paging Paging { get; private set; }
    public T Result { get; private set; } = new T();
}