在我的课堂上,我有这样的私有变量和属性。
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的新列,那么我必须向该类添加另一个属性。如果不向类中添加新属性,有任何方法可以根据表字段动态声明属性。
答案 0 :(得分:20)
您可以使用ExpandoObject
:
表示其成员可以的对象 动态添加和删除 运行时间。
dynamic expando = new ExpandoObject();
expando.Cost= 42.0;
expando.ItemName = "Shoes";
答案 1 :(得分:3)
也许你需要的是一本词典。
答案 2 :(得分:2)
如果你需要保持类属性与SQL表模式同步......你需要的是LINQ to SQL
答案 3 :(得分:1)
看看DynamicObject。您可以将System.Data.DataRow包装在一个中,以获得我认为您所追求的功能。
http://msdn.microsoft.com/en-us/library/system.dynamic.dynamicobject.aspx
答案 4 :(得分:1)
如果将新列添加到数据库,则需要更改代码以指定应如何使用新列。
如果您只需显示表格中的字段,那么您可以使用DataTable
类。
答案 5 :(得分:1)
您可以使用Dictionary<TKey,TValue>
动态关联名称和值。您可以使用索引器将它与您自己的包装器结合使用:
public string this[this key]
{
get { return dictionary[key]; }
set { dictionary[key] = value == null ? null : value.Trim(); }
}
但是,如果数据库发生了变化,那么你真的应该更改你的对象,因为它已经改变了。
答案 6 :(得分:1)
这是一个链接,您可以从数据库中动态添加属性,特殊数据行 http://www.eggheadcafe.com/community/aspnet/2/10070284/how-to-dynamically-add-propery-in-a-class-in-c.aspx