首页 > 解决方案 > 如何从 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.??
    });
}

}

  1. 如果我将员工类模型传递给这个函数,我想访问属性名称,例如“文本”的 empid 和“值”的 empname。
  2. 如果我将学生类模型传递给此函数,我想访问属性名称,例如“文本”的 studentid 和“值”的 studentname。

标签: c#listfunctiongenericsforeach

解决方案


您不需要为此要求实施泛型。您所要做的就是在您的班级之间有一个默认的“经纪人”。

只需为您的模型创建一个通用接口

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;
    }

有多种方法可以实现这一点。我只是给了你其中一个答案。


推荐阅读