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();
我想将我的模型 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();