【问题标题】:Is there a way to set a list to a models type?有没有办法将列表设置为模型类型?
【发布时间】:2015-05-26 13:22:36
【问题描述】:

我有一个使用泛型的方法,因此开发人员可以输入他们选择的模型,该模型可以是任何类型(用户、雇主等),这些都是自定义类。

我想做一个这种类型的列表。

类似这样的:

Public void makeList<T>(IEnumerable<T> model){
  List<model.getType()> list = new List<model.getType()>
}

编辑: 澄清: 假设这个方法是一个动作,如果我想从视图中调用这个动作并返回一个结果,但想传递一个任意模型。我知道 Actions 不能使用泛型。

我们可以做类似的事情

Public void makeList(IEnumerable<Dynamic> model){
  List<model.getType()> list = new List<model.getType()>
}

因为这是一个动作

【问题讨论】:

    标签: c# asp.net-mvc list datamodel


    【解决方案1】:

    也许你需要

    List<T> list = new List<T>();
    

    【讨论】:

      【解决方案2】:

      T代表类型

       Public void makeList<T>(IEnumerable<T> model){
          List<T> list = new List<T>();
       }
      

      【讨论】:

        【解决方案3】:

        你真的不明白你在做什么。我想你的方法应该是这样的:

        public void makeList<T>(IEnumerable<T> model)
        {
            List<T> list = new List<T>(model);
        }
        

        您不需要获取模型类型,因为它是 generic method 和 T 将在编译时随您的类型更改,适用于所有情况。这一行:

        new List<T>(model)
        

        只需要使用 IEnumerable&lt;T&gt; 来初始化你的 List&lt;T&gt; 即可。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2020-06-01
          • 2019-06-14
          • 1970-01-01
          • 1970-01-01
          • 2020-06-28
          • 1970-01-01
          • 2016-01-13
          相关资源
          最近更新 更多