是否可以通過反射或其他方式更改.net中的字段/屬性的數據類型?在.net中更改字段的數據類型
我在尋找此功能,因爲在強類型數據集中存在問題。強類型數據集不會爲您提供更改可爲空類型的數據類型的靈活性。查看相關鏈接here。因此,如果在運行時有可能更改數據類型,則可以消除此問題。另外,要添加;根據這個MSDN Link;微軟團隊不太熱衷於提供這種支持。
是否可以通過反射或其他方式更改.net中的字段/屬性的數據類型?在.net中更改字段的數據類型
我在尋找此功能,因爲在強類型數據集中存在問題。強類型數據集不會爲您提供更改可爲空類型的數據類型的靈活性。查看相關鏈接here。因此,如果在運行時有可能更改數據類型,則可以消除此問題。另外,要添加;根據這個MSDN Link;微軟團隊不太熱衷於提供這種支持。
首先,這不是一個錯誤;這是由於dbnull之間的差異,即未知值和null,即參考指向無處。更糟糕的是,微軟自己在解釋它時似乎很窮,這是因爲Connect和其他地方的一些不透明和無用的迴應。
這個問題有很多解決方案,具體取決於您試圖達到的目標。如果您使用的是數據綁定,那麼綁定機制通常會爲您透明地處理;如果您直接在代碼中直接訪問數據集,則設計人員將在構建Isxxxnull/setxxxnull方法之前爲您檢查該值,然後再使用它。最後,您可以將數據類型更改爲system.object,或者可以在設計器中改寫NullValue以根據需要輸入另一個值,只要該值對數據類型有效 - 例如對於int爲0或-1。
不是我所知道的。類型信息和綁定是在編譯時確定的,所以在運行時沒有辦法改變它。
用於更改打字的一種模式是adapter pattern。這可以通過所有其他字段,然後將相關字段「轉換」爲新類型。當然,這也發生在編譯時。
如果您對自己想要做的事情做更多的展開,可能會有更好的選擇。
如果您不知道列的類型,那麼您可能不應使用強類型數據集。 –
我不知道你是否可以使用'dynamic',但是有一個很好的理由,爲什麼人們只有在必要時才使用它。 – gunr2171
@MikeChristensen我知道數據類型,但不幸的是,當我嘗試迭代數據表時,由於VS的數據集設計器具有拋出異常的唯一屬性,所以出現錯誤。 – shankbond