C# 动态粘贴 T 模型 class 作为变量

C# paste T model class dynamically as variable

我想将我的模型 class 存储为一个变量,并在我的所有代码中动态使用它。例如我有这样的东西:

IEnumerable<Student> students = GetAllStudents();

通常我必须总是声明并重新输入学生 class。但我只需要声明一次,然后在我的代码中动态使用它。只是我想做这样的事情:

Student dynamicType;

所以之后就可以了:

IEnumerable<dynamicType> students = GetAllStudents();

你能帮我找到正确的解决方案吗?有可能做这样的事情吗? 谢谢

这取决于你所说的 "dynamic" 是什么意思。

如果您只是不想使用 class 名称 "Students",那么您正在寻找类型别名。

using dynamicType = MyNameSpace.Student;

...
IEnumerable<dynamicType> students = GetAllStudents();

如果您希望能够从代码的另一部分指定您正在处理的类型,您正在寻找泛型。

void DoSomething<T>()
{
    IEnumerable<T> things = GetAllThings<T>();
    ...
}

...
DoSomething<Student>();

如果您希望能够与 class 进行交互而无需关联任何特定类型,则需要 dynamic 关键字。

IEnumerable<dynamic> students = GetAllStudents();
foreach(var student in students)
{
    dynamic studentFoo = student.foo; // no type checking
}

如果您想避免在任何地方键入 "Student",但您确实希望对 IEnumerable 中的项目进行静态检查 Student,那么您可能只想使用 var关键字。\

var students = GetAllStudents();