加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 是否可以在.net 4.0中拥有动态对象属性

发布时间:2020-12-15 21:40:52 所属栏目:百科 来源:网络整理
导读:我想基于循环迭代向对象添加新属性,这可能在.Net中吗?我想这样做的原因是我循环遍历excel电子表格中的行,并且对于每个成功读取的行,我想创建一个新的动态对象属性.因此,当循环完成时,我可以简单地将对象传递给方法并记录所有记录. 请参阅下面的代码到目前为
我想基于循环迭代向对象添加新属性,这可能在.Net中吗?我想这样做的原因是我循环遍历excel电子表格中的行,并且对于每个成功读取的行,我想创建一个新的动态对象属性.因此,当循环完成时,我可以简单地将对象传递给方法并记录所有记录.

请参阅下面的代码到目前为止:

protected void ReadData(string filePath,bool upload)
    {
        StringBuilder sb = new StringBuilder();

        #region upload
        if (upload == true) // CSV file upload chosen
        {

            using (CsvReader csv = new CsvReader(new StreamReader(filePath),true)) // Cache CSV file to memory
            {
                int fieldCount = csv.FieldCount; // Total number of fields per row
                string[] headers = csv.GetFieldHeaders(); // Correct CSV headers stored in array 

                SortedList<int,string> errorList = new SortedList<int,string>(); // This list will contain error values
                ORCData data = new ORCData();

                bool errorFlag = false;
                int errorCount = 0;

                // Check if headers are correct first before reading data
                if (headers[0] != "first name" || headers[1] != "last name" || headers[2] != "job title" || headers[3] != "email address" || headers[4] != "telephone number" || headers[5] != "company" || headers[6] != "research manager" || headers[7] != "user card number")
                {
                    sb.Append("Headers are incorrect");
                }

                else
                {
                    while (csv.ReadNextRecord())
                        try
                        {
                            //Check csv obj data for valid values
                            for (int i = 0; i < fieldCount; i++)
                            {
                                if (i == 0 || i == 1) // FirstName and LastName
                                {
                                    if (Regex.IsMatch(csv[i].ToString(),"^[a-z]+$",RegexOptions.IgnoreCase) == false) //REGEX letters only min of 5 char max of 20
                                    {
                                        errorList.Add(errorCount,csv[i]);
                                        errorCount += 1;
                                        errorFlag = true;
                                        string text = csv[i].ToString();
                                    }
                                }
                            }

                            if (errorFlag == true)
                            {
                                sb.Append("<b>" + "Number of Error: " + errorCount + "</b>");
                                sb.Append("<ul>");
                                foreach (KeyValuePair<int,string> key in errorList)
                                {
                                    sb.Append("<li>" + key.Value + "</li>");
                                }
                            }
                            else // All validation checks equaled to false. Create User
                            {

                                string message = ORCLdap.CreateUserAccount(rootLDAPPath,svcUsername,svcPassword,csv[0],csv[1],csv[2],csv[3],csv[4],csv[5],csv[7]);
                                // TODO: Add to object here
                                sb.Append(message);
                                //sb.Append("<b>New user data uploaded successfully</b>");
                            }

                        }// end of try



                        catch (Exception ex)
                        {
                            sb.Append(ex.ToString());
                        }

                        finally
                        {
                            lblMessage.Text = sb.ToString();
                            sb.Remove(0,sb.Length);
                            hdnRdoSelection.Value = "1";
                        }
                }
            }

        }
        #endregion

我之前从未尝试过这样做,因此我不确定如何接近它,但任何帮助都会很棒.谢谢.

解决方法

I want to add new properties to an object based on loop iterations,is this possible in .Net?

有点.您可能希望使用ExpandoObject,将其视为IDictionary< string,object>当您添加属性时.

话虽如此,如果你以后不打算尝试将这些属性用作属性,你真的需要它们作为属性吗?为什么不使用Dictionary< string,object>开始?

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读