对不明确的标题,不完全确定如何描述它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