当前位置:  开发笔记 > 编程语言 > 正文

使用反射填充自定义类属性

如何解决《使用反射填充自定义类属性》经验,为你挑选了1个好方法。

首先,我是新手。我已经创建了class:

using System.Reflection;

 public class EmployeeInfo
{
    public string EmployeeName { get; set; }
    public string PhoneNumber { get; set; }
    public string Office { get; set; }
    public string Department { get; set; }
    public string Position { get; set; }
    public string PhoneType { get; set; }
    public bool IsPublic { get; set; }

}

现在,我正在尝试开发一种方法,该方法将通过反射使用一些业务逻辑(如果为null,然后为空字符串等)填充所有属性,并返回的列表EmployeeInfo。我认为它应该看起来像这样:

public List GetEmployeeInfo(SPListItemCollection splic)
    {

        var listEmployeeInfo = new List();
        var propertyNames = new List() {"EmployeeName","Position","Office","IsPublic"};

        foreach (SPListItem item in splic)
        {
            var employeeInfo = new Models.EmployeeInfo();


            foreach (var propertyName in propertyNames)
            {
                string newData = "";
                if (item[propertyName] != null)
                {
                    newData = item[propertyName].ToString();
                }
                employeeInfo.GetProperty(propertyName).SetValue(employeeInfo, newData, null);

            }
            listEmployeeInfo.Add(employeeInfo);
        }

        return listEmployeeInfo;


    }

但是我不能在这一行调用GetPropertySetValue扩展方法:

employeeInfo.GetProperty(propertyName).SetValue(employeeInfo, newData, null);

错误消息说我的Models.EmployeeInfo类不包含定义GetProperty和扩展方法GetProperty。缺什么 ?谢谢 。



1> 小智..:

GetProperty是Type类上的方法。

employeeInfo.GetType().GetProperty(propertyName).SetValue(employeeInfo, newData, null);

推荐阅读
殉情放开那只小兔子
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有