我有一个自定义对象,每个属性都有不同的数据类型。我希望能够做到以下几点:
public void evalCI(configurationItem CI)
{
foreach (PropertyInformation n in CI)
{
Response.Write(n.Name.ToString() + ": " + n.Value.ToString() + "</br>");
}
}我的自定义对象是:
public class configurationItem : IEnumerable
{
private string serial;
private string model;
private DateTime? wstart;
private DateTime? wend;
private Int32 daysLeft;
private string platform;
private string productVersion;
private string manufacturer;
private bool verificationFlag;
IEnumerator IEnumerable.GetEnumerator()
{
return (IEnumerator)GetEnumerator();
}
public string Serial
{
set { serial = value; }
get { return serial; }
}
public string Model
{
set { model = value; }
get { return model; }
}
public DateTime? Wstart
{
set { wstart = value; }
get { return wstart; }
}
public DateTime? Wend
{
set { wend = value; }
get { return wend; }
}
public Int32 DaysLeft
{
set { daysLeft = value; }
get { return daysLeft; }
}
public string Platform
{
set { platform = value; }
get { return platform; }
}
public string ProductVersion
{
set { productVersion = value; }
get { return productVersion; }
}
public string Manufacturer
{
set { manufacturer = value; }
get { return manufacturer; }
}
public bool VerificationFlag
{
set { verificationFlag = value; }
get { return verificationFlag; }
}我的预期输出将是:
-Serial: 1234567
-Model:野马
-Wstart: 12/12/2005
-Wend: 12/11/2006
-DaysLeft: 0
-Platform: Car
-ProductVersion: GT
-Manufacturer:福特
-VerificationFlag: true
一开始,我收到一个错误,必须实现GetEnumerator()才能使用foreach循环。我经常遇到的问题是,索引属性的所有示例都是具有可索引列表的单个属性,而不是对象中每个属性的索引。我能够让intellisense为我提供PropertyInfo的方法,方法如下:
IEnumerator IEnumerable.GetEnumerator()
{
return (IEnumerator)GetEnumerator();
}但是,第二个GetEnumerator()抛出:编译器错误消息: CS0103:名称'GetEnumerator‘在当前上下文中不存在。
这里我漏掉了什么?如何修改我的对象以获得我期望从evalCI()获得的结果?
发布于 2012-11-14 05:43:41
您不需要实现IEnumerable。你需要做的就是使用反射。
这是记忆中的,但我相信它应该是这样的:
foreach (PropertyInfo n in typeof(configurationItem).GetProperties())
{
Response.Write(string.Format("{0}: {1}<br/>", n.Name, n.GetValue(CI, null)));
}这段代码也只会提供公共属性和非索引属性(但看起来没有任何索引属性)。
https://stackoverflow.com/questions/13367929
复制相似问题