【问题标题】:Is there a built-in .NET method for getting all of the properties and values for an object?是否有用于获取对象的所有属性和值的内置 .NET 方法?
【发布时间】:2023-03-11 00:12:03
【问题描述】:

假设我有:

public class Item
{
    public string SKU {get; set; }
    public string Description {get; set; }
}

....

.NET 中是否有内置方法可以让我获取类型为 Item 的变量 i 的属性和值,如下所示:

{SKU: "123-4556", Description: "Millennial Radio Classic"}

我知道 .ToString() 可以重载以提供此功能,但我不记得 .NET 中是否已提供此功能。

【问题讨论】:

    标签: c# .net


    【解决方案1】:

    您作为示例描述的格式看起来很像JSON,因此您可以使用JavaScriptSerializer

    string value = new JavaScriptSerializer().Serialize(myItem);
    

    【讨论】:

    • 我猜我的大脑最近一直处于 JSON 模式。我真的只是在寻找一种在控制台中打印出对象的简单方法,但是是的,它肯定看起来像 JSON。
    【解决方案2】:

    如果您使用的不是 JSON 并且只是普通的 C# 类,请查看 System.Reflection 命名空间

    类似的东西会起作用

    Item item = new Item();
    foreach (PropertyInfo info in item.GetType().GetProperties())
    {
       if (info.CanRead)
       {
    
          // To retrieve value 
          object o = info.GetValue(myObject, null);
    
          // To Set Value
          info.SetValue("SKU", "NewValue", null);
       }
    }
    

    如果你想处理properties,你应该有propergetset

    【讨论】:

      【解决方案3】:
      【解决方案4】:

      您可以使用 JSON 库,例如 JSON.NET 或内置的 JavaScriptSerializer

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-02-19
        • 1970-01-01
        • 1970-01-01
        • 2010-09-16
        • 2021-09-29
        • 2020-10-20
        • 2018-06-16
        • 1970-01-01
        相关资源
        最近更新 更多