C# 有没有办法像object[属性]那样设置对象值?

C# 有没有办法像object[属性]那样设置对象值?,c#,C#,我正在尝试将datatable行映射到对象。C 我有这样的数据表 |----|------|---------| |ID | Name | Address | |----|------|---------| | 1 | Tom | USA | |----|------|---------| | 2 | Tim | AU | |----|------|---------| 我有反对意见 Contact { int ID, String Name, String Add

我正在尝试将datatable行映射到对象。C

我有这样的数据表

|----|------|---------|
|ID  | Name | Address |
|----|------|---------|
| 1  | Tom  | USA     |
|----|------|---------|
| 2  | Tim  | AU      |
|----|------|---------|
我有反对意见

Contact {
int ID,
String Name,
String Address
}
我想像这样动态地映射

Contact contact = new Contact();

foreach (var row in rows) {
   foreach(var col in table.Columns)
     contact[col.ColumnName] = row[col.ColumnaName]
}

像Javascript一样,有没有办法通过columnName设置object中的值?

创建一个联系人类,如下所示:

    public class Contact
    {
        private int ID;
        private string Name;
        private string Address;

        public Contact(int _ID, string _Name, string _Address)
        {
            ID = _ID;
            Name = _Name;
            Address = _Address;
        }
    }
之后,您可以创建如下联系人:联系人c=新联系人1,Tom,Berlin

您可以将foreach包装在其周围,并使用数据行填充联系人

像这样:

        DataTable dt = new DataTable(); // Fill this table            

        foreach (var row in dt.Rows)
        {
            Contact c = new Contact(row["ID"], row["Name"], row["Address"]);
        }

反射,或自动映射,或短小精悍?可能是重复的,那么哪一行表示要映射到联系人对象的第一行或第二行?或者您希望将所有行添加到联系人列表中object@John,automapper很慢,这是干什么用的?反射、Emitmapper、mapster是一个如何将DataTable映射到对象的示例。