首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在自定义对象上检索对象的属性名称/值对?

如何在自定义对象上检索对象的属性名称/值对?
EN

Stack Overflow用户
提问于 2012-11-14 04:07:15
回答 1查看 1.2K关注 0票数 1

我有一个自定义对象,每个属性都有不同的数据类型。我希望能够做到以下几点:

代码语言:javascript
运行
复制
    public void evalCI(configurationItem CI)
     {
    foreach (PropertyInformation n in CI)
       {
        Response.Write(n.Name.ToString() + ": " + n.Value.ToString() + "</br>");
       }
     }

我的自定义对象是:

代码语言:javascript
运行
复制
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的方法,方法如下:

代码语言:javascript
运行
复制
    IEnumerator IEnumerable.GetEnumerator()
    {
        return (IEnumerator)GetEnumerator();
    }

但是,第二个GetEnumerator()抛出:编译器错误消息: CS0103:名称'GetEnumerator‘在当前上下文中不存在。

这里我漏掉了什么?如何修改我的对象以获得我期望从evalCI()获得的结果?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-11-14 05:43:41

您不需要实现IEnumerable。你需要做的就是使用反射。

这是记忆中的,但我相信它应该是这样的:

代码语言:javascript
运行
复制
   foreach (PropertyInfo n in typeof(configurationItem).GetProperties())
   {
     Response.Write(string.Format("{0}:  {1}<br/>", n.Name, n.GetValue(CI, null)));
   }

这段代码也只会提供公共属性和非索引属性(但看起来没有任何索引属性)。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13367929

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档