C# 如何在C文件中创建List实例

C# 如何在C文件中创建List实例,c#,list,generics,reflection,C#,List,Generics,Reflection,我参加过以下课程: public class BaseGrid { public int current { get; set; } public int rowCount { get; set; } public int total { get; set; } public List<T> rows { get; set; } } public class Product { public int Id { get; set; }

我参加过以下课程:

public class BaseGrid
{
    public int current { get; set; }
    public int rowCount { get; set; }
    public int total { get; set; }
    public List<T> rows { get; set; }
}

public class Product
{
    public int Id { get; set; }
    public string Name { get; set; }
}
回到我的控制器,我想做一些类似的事情:

        List<Product> listOfProducts = new List<Product>();

        BaseGrid baseGrid = new BaseGrid();
        baseGrid.rowCount = 10;
        baseGrid.total = 20;
        baseGrid.current = 1;
        baseGrid.rows = listOfProducts;
如何将rows属性变成一个通用列表,并在运行时将baseGrid.rows转换为我想要的任何列表类型


谢谢。

听起来你想要的是运行时多态性

public abstract class Animal
{
  public abstract void makeSound()
  {
    Console.WriteLine("[nothing happens]");
  }
}

public class Cat : Animal
{
  public override void makeSound()
  {
    Console.WriteLine("Meow");
  }
}

public class Dog : Animal
{
  public override void makeSound()
  {
    Console.WriteLine("Woof");
  }
}

public static void main(String[] args) 
{
    var animals = new List<Animal>();
    animals.Add(new Dog());
    animals.Add(new Cat());
    Console.Add(animals[0].MakeSound());  // Woof
    Console.Add(animals[1].MakeSound());  // Meow
}

听起来你想要的是运行时多态性

public abstract class Animal
{
  public abstract void makeSound()
  {
    Console.WriteLine("[nothing happens]");
  }
}

public class Cat : Animal
{
  public override void makeSound()
  {
    Console.WriteLine("Meow");
  }
}

public class Dog : Animal
{
  public override void makeSound()
  {
    Console.WriteLine("Woof");
  }
}

public static void main(String[] args) 
{
    var animals = new List<Animal>();
    animals.Add(new Dog());
    animals.Add(new Cat());
    Console.Add(animals[0].MakeSound());  // Woof
    Console.Add(animals[1].MakeSound());  // Meow
}

提示:BaseGrid需要是泛型的。@艾米:泛型是编译时的概念,即使在指定具体类型时也是如此。@RobertHarvey我知道。我想你和我对这个问题的解释非常不同。提示:BaseGrid需要是泛型的。@艾米:泛型是一个编译时概念,即使在指定具体类型时也是如此。@RobertHarvey我知道。我想你和我对这个问题的解释非常不同。如果你没有定义任何其他构造函数,你就不需要显式声明泛型构造函数。@nulltron:你仍然需要初始化列表。@RobertHarvey我不知道你在谈论列表。洛尔,不然你为什么要把它变成泛型的呢?:@RobertHarvey,因为泛型太棒了。如果没有定义任何其他构造函数,则不需要显式声明泛型构造函数。@nulltron:您仍然需要初始化列表。@RobertHarvey我不知道您在谈论列表。lolWell,否则您为什么要把它定义为泛型呢?:@RobertHarvey,因为仿制药太棒了。