我将List传递给方法,我想知道,这是返回此列表实际名称的最简单方法。 我正在努力实现这样的目标。
static List<string> GatherDataPerProduct(List<Pandora.Data.DomainObject> lstdata)
{
if(lstData.value == "subjects")
{
//do whatever
}
答案 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。