C#将T模型类动态地粘贴为变量

时间:2016-10-05 15:04:34

标签: c# class dynamic declare

我想将我的模型类存储为变量,并在我的所有代码中动态使用它。例如,我有这样的事情:

IEnumerable<Student> students = GetAllStudents();

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

Student dynamicType;

那之后就可以了:

IEnumerable<dynamicType> students = GetAllStudents();

你能帮我找到合适的解决方案吗?可以这样做吗? 谢谢

1 个答案:

答案 0 :(得分:1)

这取决于你所说的“动态”。

如果您只是不想使用班级名称“学生”,那么您正在寻找类型别名。

using dynamicType = MyNameSpace.Student;

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

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

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

...
DoSomething<Student>();

如果您希望能够与该类进行互动而不与其关联任何特定类型,那么您正在寻找dynamic关键字。

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

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

var students = GetAllStudents();