들어오는 열을 확인하여 그 열거 형의 유형을 확인하고이를 기반으로 열에 올바른 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, string, integral, enum 또는 해당 nullable 유형이어야합니다." –