我已經找到了關於這個主題的一些信息,但它都是關於典型的類 - 我不知道如何將下面的類轉換爲通用版本。一般鍵入HashSet
我已經繼承了現有的代碼,它使用SqlHashSet類爲參數設置數據庫的整數值。它看起來像這樣:
namespace Services
{
public class SqlHashSet : HashSet<int>, IEnumerable<SqlDataRecord>
{
SqlDataRecord ret = new SqlDataRecord(new SqlMetaData("value", SqlDbType.Int));
foreach (var data in this)
{
ret.SetValue(0, data);
yield return ret;
}
}
}
由於代碼的結構,我必須使用SqlHashSet。我的問題是我需要一個SqlHashSet 字符串。
我想也許我可以在類聲明中使用HashSet<T>
但後來我也有檢查值的類型SqlDbType.int或SqlDbType.VarChar
所以,我的問題是:
我可以這樣做嗎?
我需要做什麼才能使用
<T>
?也許沒有第三個問題;也許然後我可以通過代碼,一旦我有一個泛型類型的工作,並找出如何確定SqlDbType設置值。
'我可以這樣做嗎?<=不,你在這裏顯示的代碼不會編譯,所以不會。產生結果的'foreach'循環必須是方法體的一部分,它不能獨立存在於類體中。 – Igor
'我需要怎麼做才能使用?<=也許更好的問題是這個改變會值得嗎?原始SQL類型的數量有限,並且SqlType不必與1個.net原始類型進行對齊,通常這種關係取決於您的模型結構。例如:.net DateTime可以映射到Date,DateTime或DateTime2。這可能不是使用通用的最佳位置。 –
Igor
你可以採取簡單的方法,並有兩個通用參數,一個用於'HashSet'和一個用於'SqlDbType'。你的類看起來像'SqlHashSet'。或者,重寫代碼以不使用此'SqlHashSet'並堅持庫類型。 –