我想現在檢查傳入列以查看它是什麼類型的枚舉,並基於此,我爲該列返回正確的DB類型。我不能得到這個工作,不知道如何:檢查什麼類型的枚舉進入通用方法
public DbType GetColumnDbType<T>(T column) where T: IComparable, IFormattable, IConvertible
{
if (!typeof(T).IsEnum) throw new ArgumentException("the object passed in must an enum type");
switch (column)
{
case (Enums.MemberColumn)column:
switch (Enums.MemberColumn)
{
case Enums.MemberColumn.Address1:
return DbType.String;
break;
case Enums.MemberColumn.City:
return DbType.String;
break;
case Enums.MemberColumn.State:
return DbType.String;
break;
}
}
.....
修訂
這裏就是我試過,但編譯器抱怨在第一行說:「預計整體類型的值」
switch(typeof(T))
{
case (typeof (Enums.MemberColumn)):
switch ((Enums.MemberColumn) column)
{
case Enums.MemberColumn.Address1:
return DbType.String;
break;
case Enums.MemberColumn.City:
return DbType.String;
break;
case Enums.MemberColumn.State:
return DbType.String;
break;
default:
throw new ArgumentException("Unsupported enum type.", "MemberColumn");
break;
}
}
如果您基於類型進行切換,則應該考慮進行類型特定的重載。 – cadrell0
什麼不工作? –
正如我在下面指出的那樣,您無法打開「Type」類型的表達式。從編譯器:「開關表達式或案例標籤必須是bool,char,字符串,整數,枚舉或相應的可空類型」。 –