मैं .NET System.Type और SqlDbType के बीच एक स्मार्ट रूपांतरण की तलाश में था। क्या मैंने पाया यह निम्नलिखित विचार था:.NET सिस्टम प्रकार SqlDbType
private static SqlDbType TypeToSqlDbType(Type t)
{
String name = t.Name;
SqlDbType val = SqlDbType.VarChar; // default value
try
{
if (name.Contains("16") || name.Contains("32") || name.Contains("64"))
{
name = name.Substring(0, name.Length - 2);
}
val = (SqlDbType)Enum.Parse(typeof(SqlDbType), name, true);
}
catch (Exception)
{
// add error handling to suit your taste
}
return val;
}
ऊपर कोड वास्तव में अच्छा नहीं है और एक कोड गंध, जिसके कारण मैं पर https://msdn.microsoft.com/en-us/library/cc716729(v=vs.110).aspx आधार पर निम्न,, भोली स्मार्ट नहीं है, लेकिन उपयोगी समारोह में लिखा था, है:
public static SqlDbType ConvertiTipo(Type giveType)
{
var typeMap = new Dictionary<Type, SqlDbType>();
typeMap[typeof(string)] = SqlDbType.NVarChar;
typeMap[typeof(char[])] = SqlDbType.NVarChar;
typeMap[typeof(int)] = SqlDbType.Int;
typeMap[typeof(Int32)] = SqlDbType.Int;
typeMap[typeof(Int16)] = SqlDbType.SmallInt;
typeMap[typeof(Int64)] = SqlDbType.BigInt;
typeMap[typeof(Byte[])] = SqlDbType.VarBinary;
typeMap[typeof(Boolean)] = SqlDbType.Bit;
typeMap[typeof(DateTime)] = SqlDbType.DateTime2;
typeMap[typeof(DateTimeOffset)] = SqlDbType.DateTimeOffset;
typeMap[typeof(Decimal)] = SqlDbType.Decimal;
typeMap[typeof(Double)] = SqlDbType.Float;
typeMap[typeof(Decimal)] = SqlDbType.Money;
typeMap[typeof(Byte)] = SqlDbType.TinyInt;
typeMap[typeof(TimeSpan)] = SqlDbType.Time;
return typeMap[(giveType)];
}
कोई कैसे एक क्लीनर, बेहतर और अच्छा तरीका में एक ही परिणाम प्राप्त करने के लिए करने के विचार है?
बनाना शब्दकोश रूपांतरण ठीक है। जीवन काल में * एक बार * हो गया। :) (कम परिवर्तन है) – Ian
अगर मेरे उत्तर ने आपकी मदद की है, तो कृपया इसे अपने चुने हुए उत्तर के रूप में चिह्नित करें। :) –