對不明確的標題,不完全確定如何描述它C# - 獲取對象名稱?
我有一個菜單列表的自定義列表。 CatalogueMenu有一個枚舉這樣我就可以通過顏色列表中環路它
public class CatalogueMenu
{
private List<List<MenuItem>> MenuList = new List<List<MenuItem>>();
public List<MenuItem> Reds { get; private set; }
public List<MenuItem> Blues { get; private set; }
public List<MenuItem> Greens { get; private set; }
public List<MenuItem> Yellows { get; private set; }
public CatalogueMenu()
{
Reds = new List<MenuItem>();
Blues = new List<MenuItem>();
Greens = new List<MenuItem>();
Yellows = new List<MenuItem>();
MenuList.Add(Reds);
MenuList.Add(Blues);
MenuList.Add(Greens);
MenuList.Add(Yellows);
}
public IEnumerator<List<MenuItem>> GetEnumerator()
{
return this.MenuList.GetEnumerator();
}
}
public class MenuItem
{
public int ID { get; set; }
public string Name { get; set; }
}
在我MVC3應用程序,我通過列表循環,但我也想顯示每個列表如名稱
藍調 - 列表 - 的 - 布魯斯 紅人 - 列表 - 的 - 紅魔
一)我可以從實際列表對象本身的列表名稱? 或 B)難道我有那麼它包含名稱的字符串創建顏色列表中的自定義類,以及一個清單,以及
<ul>
@foreach (var itemList in Model)
{
<li class="listName">**@itemList.Name or something like that?**</li>
foreach (var item in itemList)
{
<li>@Html.ActionLink(
item.Name,
"Browse",
"Catalogue",
Request.QueryString.ToRouteValueDictionary().AddOrUpdate(**itemList.Name??**, item.ID),
null)
</li>
}
}
</ul>
你當然可以在運行時獲取對象的名稱;這就是所謂的[反射](http://csharp.net-tutorials.com/reflection/introduction/)。儘管如此,仍在研究你的問題的其餘部分。 – 2011-04-22 23:18:32
@Albert Perrien:不,對象沒有名字。您可以使用反射來獲取包含對該對象的引用的屬性的名稱,但只能通過遍歷這些屬性並獲取它們的值來將它們與該對象的引用進行比較。 – Guffa 2011-04-22 23:26:47
@Albert:假設「名稱」的意思是「引用它的變量的名稱」,我不得不懷疑它是可能的並且它是有意義的。沒有這樣的東西作爲一個對象的名稱 - 對於一個給定的對象,有任何數字(包括零)的名稱引用它。順便說一下,發現它們非常昂貴。順便說一下,該數字與實際引用對象的數量無關。 – delnan 2011-04-22 23:28:08