向属性动态添加属性

时间:2011-06-01 03:42:15

标签: c#

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

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的新列,那么我必须向该类添加另一个属性。如果不向类中添加新属性,有任何方法可以根据表字段动态声明属性。

7 个答案:

答案 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