C#如何对泛型类型的两个类使用一种方法?

时间:2019-05-27 10:35:18

标签: c# class generics printing

我需要将两种不同的打印方法合并为一种。我有两个通用类和我自己的通用列表类。 假设我有

static void Print(string fv, MyListClass<Module> A,
            string top)
 and static void Print2(string fv, MyListClass<Student> A,
            string top)

方法内部是相同的,但是如何使它们成为一种方法,在主类中,我选择要打印的一个类列表的参数,或者选择“学生”。我的数据在:

MyListClass<Student> Stud; 
MyListClass<Module> Mod;

2 个答案:

答案 0 :(得分:3)

  

我有两个 generic 类和我自己的泛型列表类。

您为什么有自己的列表类?您通常不应该。假设它实现了IEnumerable<T>

ModuleStudent都实现一个具有您要打印的属性的公共接口,例如IPrintable

public interface IPrintable
{
    string Name { get; }
    string Description { get; }
}

public class Module : IPrintable { ... }
public class Student : IPrintable { ... }

现在创建具有通用参数的方法:

void Print<T>(string fv, IEnumerable<T> A, string top)
    where T : IPrintable
{
    foreach (var item in A)
    {
        Console.WriteLine(item.Name + ": " + item.Description);
    }
}

答案 1 :(得分:1)

为此,您只需创建一个基类,从中派生Module和Student类,然后在单个方法的签名中使用基类。