System.Data.SqlClient的對象使用元類型組件的DbType和SqlDbType轉換爲.NET CLR類型。使用反射,如果需要的話,你可以利用這種能力:
var dbType = DbType.Currency;
Type metaClrType = Type.GetType(
"System.Data.SqlClient.MetaType, System.Data, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089",
true,
true
);
object metaType = metaClrType.InvokeMember(
"GetMetaTypeFromDbType",
BindingFlags.InvokeMethod | BindingFlags.Static | BindingFlags.NonPublic,
null,
null,
new object[] { dbType }
);
var classType = (Type)metaClrType.InvokeMember(
"ClassType",
BindingFlags.GetField | BindingFlags.Instance | BindingFlags.NonPublic,
null,
metaType,
null
);
string cSharpDataType = classType.FullName;
雖然這似乎是工作,我認爲這是一個無證的呼叫,可能無法在框架的未來版本和/或可能不提供非.NET的Windows版本? – 2015-01-16 12:11:10