我有.NET項目同步框架和兩個單獨的數據集的MS SQL和Compact SQL。在我的基類中,我有一個通用的DataTable對象。在我的派生歸入我指定類型的DataTable基於應用程序是否在線或離線操作的通用對象:例如:兩個類似的數據表對象之間的類型轉換
if (online)
_dataTable = new MSSQLDataSet.Customer;
else
_dataTable = new CompactSQLDataSet.Customer;
現在在我的代碼的每一個地方我都基於當前檢查,並做了投網絡模式是這樣的:
public void changeCustomerID(int ID)
{
if (online)
(MSSQLDataSet.CustomerDataTable)_dataTable)[i].CustomerID = value;
else
(CompactMSSQLDataSet.CustomerDataTable)_dataTable)[i].CustomerID = value;
}
,但我不認爲這是非常有效的,我相信它可以在一個更聰明的方式來完成,以通過動態獲取_dataTable的類型上來說只用一行代碼時間。
我的問題是在設計時,爲了訪問諸如「CustomerID」之類的數據表格屬性,它必須被轉換爲MSSQLDataSet.CustomerDataTable或CompactMSSQLDataSet.CustomerDataTable。
有沒有辦法讓函數或操作符將_datatable轉換爲其運行時類型,但是仍然能夠使用它的兩種類型的設計時間屬性?類似於:
((aType)_dataTable)[i].CustomerID = value;
//or
GetRuntimeType(_dataTable)[i].CustomerID = value;
使用ICustomerDataTable接口? –