【问题标题】:Dynamically Pass List of Object As A Parameter动态传递对象列表作为参数
【发布时间】:2018-04-17 00:14:21
【问题描述】:

我有一个方法,我传递对象列表如下:

public void BindGridView(int pageIndex, List<Users> lstUsers, GridView grd, Panel pl)
{

}

在上面的列表中看到List&lt;Users&gt; 是固定的,所以我可以在一个方法中静态地传递它。我将使用相同的方法在网格中显示数据,并计划在有其他对象列表时动态传递。通过上述方式,我必须将所有列表声明如下:

public void BindGridView(int pageIndex, List<Groups> lstGroups, GridView grd, Panel pl)
{
}

public void BindGridView(int pageIndex, List<GroupDetails> lstGroupDetails, GridView grd, Panel pl)
{
}

有没有什么方法可以动态地声明它,比如List&lt;Dynamic&gt;,比如出于实用目的,所以每次我都可以传递任何对象列表?

【问题讨论】:

  • 阅读泛型,使方法泛型并通过List&lt;T&gt;
  • 非常感谢@Gilad Green,我明白了。一方面,我可以声明一个像 List&lt;T&gt; lst = null; 这样的列表并尝试,它说,找不到类型或命名空间“T”

标签: c# asp.net list dynamic parameter-passing


【解决方案1】:

您最有可能在这里寻找泛型。即:

public void BindGridView<T>(int pageIndex, List<T> lstUsers, GridView grd, Panel pl)
{
    ...
}

【讨论】:

  • 感谢@Aominè,这正是我想要的。一方面,我可以声明这样的列表 List&lt;T&gt; lst = null; 并尝试,它说,找不到类型或命名空间“T”
  • 只有在方法范围内才能执行此操作,但 T 在方法之外不存在。另外,请注意 T 只是一个占位符,因此当您调用该方法时,您需要传入具体类型,即 List&lt;GroupDetails&gt;
  • 如果您希望T 在整个班级中可见,那么您可能需要概括班级本身,这将使您能够在整个班级中使用T。看看Introduction to Generics (C# Programming Guide)
猜你喜欢
  • 1970-01-01
  • 2023-03-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多