c# - 将字符串与类属性名称匹配

标签 c# reflection

我有一个类,假设有 5 个属性

Int32 Property1;
Int32 Property2;
Int32 Property3;
Int32 Property4;
Int32 Property5;

现在我必须动态设置其中三个属性的值。到目前为止没问题,但我的问题是我在运行时将这三个属性名称作为字符串获取。 让我们说,像这样的东西..

List<String> GetPropertiesListToBeSet()
{
   List<String> returnList = new List<String>();
   returnList.Add("Property1");
   returnList.Add("Property3");
   returnList.Add("Property4");
   retun returnList;
}

现在,

 List<String> valuesList = GetPropertiesToBeSet();

 foreach (String valueToSet in valuesList)
 {
 // How Do I match these Strings with the property Names to set values
    Property1 = 1;
    Property3 = 2;
    Property4 = 3;
 }

最佳答案

你可以这样做。属性是你的类

        Properties p = new Properties();
        Type tClass = p.GetType();
        PropertyInfo[] pClass = tClass.GetProperties();

        int value = 0; // or whatever value you want to set
        foreach (var property in pClass)
        {
            property.SetValue(p, value++, null);
        }

关于c# - 将字符串与类属性名称匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27317552/

相关文章:

c# - DateTimeFormatInfo.MonthDayPattern 在 Windows Server 2012 中已更改 - 如何将其恢复?

javascript - 双 ToString 保持 "en-US"格式

java - 继承类中的反射

c# - 如何获取主键

c# - 如何在生产和开发环境上一致地获取 ASP.NET 5 DNX 项目的应用程序基路径?

c# - 如何在 Winforms 应用程序中维护用户登录详细信息?

c# - 构造函数参数枚举和魔术字符串

asp.net - 如何在ASP.NET应用程序中创建类的实例

c# - WPF DataGrid - 如何在添加新行时将注意力集中在 DataGrid 的底部?

reflection - 如何确定 ConstructorInfo 对象是否具有非托管参数?