【问题标题】:How do I pass a list of types to a method call in C#?如何将类型列表传递给 C# 中的方法调用?
【发布时间】:2015-07-15 14:28:21
【问题描述】:
  • .NET 4.51

我正在尝试声明一个方法,在该方法中我可以通过参数 aListOfClasses 传递类列表,即:

public static class MyClass
{
  public static void MyCall(List<**WhatDoIPutHere**> aListOfClasses)
  {
    foreach (var item in aListOfClasses)
    {
      var typeInfo = typeof (item);
    }
  }
}

所以如果我说的是一堆没有共同基础的类:

public class ClassOne
{

}

public class ClassTwo
{

}

我希望能够如下调用我的方法L

var myListOfClasses = new List<????>();
myListOfClasses.Add(ClassOne);
myListOfClasses.Add(ClassTwo);

MyClass.MyCall(myListOfClasses);

所以我的问题是:

  1. 如何声明一个ListOfClasses?是什么类型的?

【问题讨论】:

  • List 可以满足您的需求。
  • 你为什么要这样做?
  • @Enigmativity 我正在尝试使用从这个问题中获得的知识来实现​​stackoverflow.com/questions/31399498/…
  • @deathismyfriend 最终这对我不起作用,因为当我尝试使用 public static void MyCall(List aListOfClasses) { foreach (var listOfClass in aListOfClasses) { System.Type typeInfo = typeof(类列表);我得到一个编译器错误,说无法找到 listOfClass。所以现在我将使用下面的 Blorgbeard 解决方案。

标签: c# generics


【解决方案1】:

你可以这样声明你的方法:

public static void MyCall(List<Type> aListOfClasses)
{
    foreach (var item in aListOfClasses)
    {
        var typeInfo = item; // no need for typeof again
    }
}

并像这样定义您的列表:

var myListOfClasses = new List<Type>();
myListOfClasses.Add(typeof(ClassOne));
myListOfClasses.Add(typeof(ClassTwo));

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2017-08-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-26
  • 1970-01-01
  • 2011-08-06
  • 1970-01-01
相关资源
最近更新 更多