向属性动态添加属性

在我的课堂上,我有像这样的私有变量和属性。

private string _itemCOde=string.Empty; private string _itemName=string.Empty; public string ItemCode { get { return _itemCode; } set { _itemCode = value == null ? value : value.Trim();} } public string ItemName { get { return _itemName; } set { _itemName = value == null ? value : value.Trim();} } 

根据这个属性,我在从sql表中选择数据后创建了Item对象。

现在,如果数据库表被更改并添加一个名为cost的新列,那么我必须向该类添加另一个属性。 在不向类添加新属性的情况下,可以根据表字段动态声明属性。

您可以使用ExpandoObject

表示可以在运行时动态添加和删除其成员的对象。

 dynamic expando = new ExpandoObject(); expando.Cost= 42.0; expando.ItemName = "Shoes"; 

也许你需要的是一本词典。

如果你需要保持类属性与SQL表模式同步……你需要的是LINQ to SQL

看一下DynamicObject。 您可以将System.Data.DataRow包装在一个中以获得我认为您正在使用的function。

http://msdn.microsoft.com/en-us/library/system.dynamic.dynamicobject.aspx

如果将新列添加到数据库,则需要更改代码以指定应如何使用新列。

如果您只需要显示表的内容,尽管表中有字段,那么您可以使用DataTable类。

您可以使用Dictionary动态地将名称和值相互关联。 您可以使用索引器将它与您自己的包装器结合使用:

 public string this[this key] { get { return dictionary[key]; } set { dictionary[key] = value == null ? null : value.Trim(); } } 

但是,如果数据库发生了变化,那么你真的应该更改你的对象,因为它已经改变了。

这是一个链接,您可以从数据库中动态添加属性,特殊数据行http://www.eggheadcafe.com/community/aspnet/2/10070284/how-to-dynamically-add-propery-in-a-class-在-c.aspx