如何获取List的名称

时间:2013-05-16 08:59:01

标签: c# list

我将List传递给方法,我想知道,这是返回此列表实际名称的最简单方法。 我正在努力实现这样的目标。

static List<string> GatherDataPerProduct(List<Pandora.Data.DomainObject> lstdata)
{
    if(lstData.value == "subjects")
    {
      //do whatever
    }

3 个答案:

答案 0 :(得分:2)

您需要将列表包装在另一个包含额外数据的对象中。 e.g。

public class DataList
{
    public List<Pandora.Data.DomainObject> Data {get; set;}
    public string Name {get; set;}
}

...

static List<string> GatherDataPerProduct(DataList lstdata)
{
    if(lstData.Name == "subjects")
    ....
}

答案 1 :(得分:2)

如果你的意思是列表传递给这样的方法时使用的变量的名称:

static List<string> GatherDataPerProduct(List<Pandora.Data.DomainObject> lstdata)
    {
        if(lstData.value == "subjects")
        {
          //do whatever
         }

List<DomainObject> subjects;
GatherDataPerProduct(subjects);
那么你要做的就是不可能。原因是在编译时,编译器将删除所有变量名称。这意味着你无法获得变量的名称。如果您真正想要的是命名对象本身,那么您应该使用Dave的答案并将列表包装在另一个对象中并在其上定义属性。

答案 2 :(得分:1)

试试这个:

using Extensions;

namespace ConsoleApplication
{
    class Program
    {
        static void Main(string[] args)
        {
            var subjects = default(List<Pandora.Data.DomainObject>);
            var result = Helper<List<Pandora.Data.DomainObject>>.ExampleFunction(() => subjects);
        }
    }

}
namespace Extensions
{
    static class Helper<T>
    {
        public static List<string> ExampleFunction(Expression<Func<T>> f)
        {
            if ((f.Body as MemberExpression).Member.Name == "subjects")
            {
                return new List<String>();
            }
            return null;
        }
    }
}

原始解决方案是here