c# - 如何从 Generic 中获取值在 foreach 循环中
问题描述
我创建了一个支持所有类模型的函数(通用)。但我有一个关于为每个循环获取泛型值的查询。
这适用于 ASP.NET (MVC),在控制器中创建代码。
public List<SelectListItem> GetGenericList<T> (list<T> genModel)
{
List<SelectListItem> lst = new List<SelectListItem>();
foreach(var dyn in lst)
{
lst.add (new selectlistitem
{
text = dyn.??,
Value = dyn.??
});
}
}
- 如果我将员工类模型传递给这个函数,我想访问属性名称,例如“文本”的 empid 和“值”的 empname。
- 如果我将学生类模型传递给此函数,我想访问属性名称,例如“文本”的 studentid 和“值”的 studentname。
解决方案
您不需要为此要求实施泛型。您所要做的就是在您的班级之间有一个默认的“经纪人”。
只需为您的模型创建一个通用接口
interface IModelInterface
{
int Id { get; set; }
string Name { get; set; }
}
你的班级应该将接口实现为
public class Student : IModelInterface
{
public int Id { get; set; }
public string Name { get; set; }
}
public class Employee : IModelInterface
{
public int Id { get; set; }
public string Name { get; set; }
}
并对您的 GetGenericList 方法进行细微更改
public List<SelectListItem> GetListItems(List<IModelInterface> genModel)
{
List<SelectListItem> lst = new List<SelectListItem>();
foreach (var dyn in genModel)
{
lst.Add(new SelectListItem
{
Text = dyn.Name,
Value = Convert.ToString(dyn.Id)
});
}
return lst;
}
有多种方法可以实现这一点。我只是给了你其中一个答案。
推荐阅读
- swiftui - 如何从 SwiftUI 中的 NavigationView 中删除搜索栏?
- node.js - socket.io .on 函数 ins 没有正确接收数据
- mysql - MySQL 对单个字段进行多个组以生成组合
- java - 无法在 Heroku 中执行 PUT 和 DELETE 方法
- python-3.x - 当变量类型是预期类型的子集时,Mypy 抱怨类型不兼容
- android - Android中的textAppearance和内置主题属性是什么?
- android - 如何访问医生和用户的 Firestore 集合我不知道他是用户还是医生
- javascript - ImageBackground resizeMode 在样式道具中不起作用
- objective-c - 我的应用程序如何检测另一个应用程序的窗口是否已关闭?
- powerbi - 如何通过 Power BI 中的度量找到前 10 个国家/地区?