如何将常量和类属性值映射到字典

本文关键字:字典 int 对象 映射 常量 属性 | 更新日期: 2023-09-27 18:30:33

我有一个名为Contact的类和另一个名为ContactKeys的类,它们包含Int32常量。每个常量映射到 Contact 类的属性,并具有相同的名称。

public class Contact
{
    public string Name { get; set; }
    public int Age { get; set; }
}
public static class ContactKeys
{
    public const int Name = 5284;
    public const int Age = 9637;
}

使用Automapper,我需要创建一个Dictionary<int, object>对象,其中键是来自ContactKey的常量,并且该值由Contact类中同名的属性提供。

从这篇文章中,我可以看到这可能会将Contact类序列化为 JSON,然后将其映射。但是我不知道如何映射常量。

有什么想法吗?

如何将常量和类属性值映射到字典<int,对象>

我不知道AutoMapper以及为什么您需要使用它来解决此问题,但这里有一个使用反射的解决方案:

Contact myContact = ...;
typeof(ContactKeys)
    .GetFields(BindingFlags.Public | BindingFlags.Static)
    .ToDictionary(f => (int)f.GetValue(null),
                  f => typeof(Contact).GetProperty(f.Name).GetValue(myContact));