从shared / pcl项目中的对象获取具有反射的属性

时间:2017-02-28 14:50:10

标签: c# reflection

我有一个包含500个参数的对象,我无法更改它,因为它是一个共享项目。 我的目标是通过反思获得财产价值,但我无法做到。

这是我的代码:

public class MyObjects
    {    
    public int RGP_Id { get; set; }
    public DateTime RGP_DateTime { get; set; }
    public int RGP_MCC_Numero_Serie_MS { get; set; }
    public int RGP_IDREG_1 { get; set; }
    public int RGP_IDREG_2 { get; set; }
    public int RGP_IDREG_3 { get; set; }
    public int RGP_IDREG_4 { get; set; }
    public int RGP_IDREG_5 { get; set; }
    public int RGP_IDREG_6 { get; set; }
    public int RGP_IDREG_7 { get; set; }
    public int RGP_IDREG_8 { get; set; }
    public int RGP_IDREG_9 { get; set; }
    public int RGP_IDREG_10 { get; set; }
    .......
    public int RGP_IDREG_500 { get; set; }

}

...

var profile = MyObjects;
var idProperty = GetProperty(profile.GetType().GetTypeInfo(), "RGP_IDREG_10");

...

idProperty 包含对象,我做了。

现在,如何使用idProperty获取值? 基本上我会得到:

var x = MyObjects.idProperty;

我怎样才能完成这项工作?

2 个答案:

答案 0 :(得分:1)

假设idPropertyPropertyInfo对象,您可以执行以下操作:

var result = (int) idProperty.GetValue(profile,null);

您必须确保转换该值,因为它以object的形式返回。

答案 1 :(得分:0)

您可以使用以下代码恢复价值:

var x = idProperty.GetValue(profile, null))

您可以在此处获取更多信息: https://msdn.microsoft.com/cs-cz/library/b05d59ty(v=vs.110).aspx