私はあなたが達成しようとしているものが正確ではありませんが、基本オブジェクトから派生するのがおそらく最善のルートです。この1にC#の拡張機能を持つスピン...
public class MyDataColumnCollection : InternalDataCollectionBase
{
private readonly ArrayList _list = new ArrayList();
protected override ArrayList List
{
get
{
return this._list;
}
}
public void Add(MyDataColumn c)
{
this.List.Add(c);
}
}
public class MyDataTable : DataTable
{
private MyDataColumnCollection _columns = new MyDataColumnCollection();
public new MyDataColumnCollection Columns
{
get { return this._columns; }
}
}
public class MyDataColumn : DataColumn
{
public string MyCustomProperty { get; set; }
}
static void Main(string[] args)
{
MyDataTable t = new MyDataTable();
MyDataColumn c = new MyDataColumn();
c.ColumnName = "My Test Column";
c.MyCustomProperty = "This is really cool!";
t.Columns.Add(c);
foreach (MyDataColumn mdc in t.Columns)
{
System.Diagnostics.Debug.WriteLine(mdc.MyCustomProperty);
}
}
カスタムKeyedCollectionとソース<>
public class MyDataColumnCollection :
KeyedCollection<string, MyDataColumn>
{
protected override string GetKeyForItem(MyDataColumn item)
{
return item.ColumnName;
}
}
public class MyDataTable : DataTable
{
private MyDataColumnCollection _columns = new MyDataColumnCollection();
public new MyDataColumnCollection Columns
{
get { return this._columns; }
}
}
public class MyDataColumn : DataColumn
{
public string MyCustomProperty { get; set; }
}
static void Main(string[] args)
{
MyDataTable t = new MyDataTable();
MyDataColumn c = new MyDataColumn();
c.ColumnName = "My Test Column";
c.MyCustomProperty = "This is really cool!";
t.Columns.Add(c);
foreach (MyDataColumn mdc in t.Columns)
{
System.Diagnostics.Debug.WriteLine(mdc.MyCustomProperty);
}
MyDataColumn testColumn = t.Columns["My Test Column"];
System.Diagnostics.Debug.WriteLine(testColumn.MyCustomProperty);
}
ソリューション付け:
namespace ExtensionMethods
{
public static class MyExtensions
{
public static void UpdateValue(this DataTable dt)
{
// add code to update data in the DataTable
}
}
}
// in another class...
DataTable myDataTable = (Get DataTable object);
myDataTable.UpdateValue();
をあなたがDALのデザインパターンを使用してに見たいと思うかもしれません特定のデータ表現(例えば、DataTable)に直接結合するのではなく、任意選択的にORMと結合される。永続化レイヤーを抽象化し、拡張可能(仮想メソッド、抽象メソッド、または単にインターフェイス)となるように設計すると、このような問題はもっと簡単になります。 http://en.wikipedia.org/wiki/Data_access_layer –
@Merlyn Morgan-Grahamに全面的に同意します。これを行うより良い方法があります。 – Randolpho
ADO.NET DataTableクラスとDataColumnクラスを意味しますか? –