我正在將List傳遞給一個方法,我想知道,返回此列表的實際名稱的最簡單方法。 我想要實現這樣的事情。如何獲取列表的名稱
static List<string> GatherDataPerProduct(List<Pandora.Data.DomainObject> lstdata)
{
if(lstData.value == "subjects")
{
//do whatever
}
我正在將List傳遞給一個方法,我想知道,返回此列表的實際名稱的最簡單方法。 我想要實現這樣的事情。如何獲取列表的名稱
static List<string> GatherDataPerProduct(List<Pandora.Data.DomainObject> lstdata)
{
if(lstData.value == "subjects")
{
//do whatever
}
如果你的意思是,當名單被傳遞給方法使用這樣的變量名:
static List<string> GatherDataPerProduct(List<Pandora.Data.DomainObject> lstdata)
{
if(lstData.value == "subjects")
{
//do whatever
}
List<DomainObject> subjects;
GatherDataPerProduct(subjects);
那麼什麼你試圖做的事情是不可能的。原因是在編譯時,編譯器將刪除所有變量名稱。這意味着你不能得到變量的名字。如果你真正想要的是命名對象本身,那麼你應該使用Dave的答案並將該列表包裝在另一個對象中並在其上定義一個屬性。
您需要將您的列表包裹在另一個包含額外數據的對象中。例如
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")
....
}
試試這個:
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。
你的意思是'這個名單的名字'? – Kasyx
變量「名稱」本身沒有什麼意義 –
爲什麼這個問題如此低落?確實,他試圖做的事情可能是不可能的,但這並不是一個無效的問題。 – Kenneth