C# 能否从Dapper DynamicParameters获取DbType?
我需要遍历DapperC# 能否从Dapper DynamicParameters获取DbType?,c#,.net-4.5,dapper,C#,.net 4.5,Dapper,我需要遍历DapperDynamicParameters。所以,我检查答案以获得参数值 foreach (var paramName in parameters.ParameterNames) { var value = ((SqlMapper.IParameterLookup)parameters)[paramName]; } 现在,我需要参数DbType。有可能得到这些信息吗?我不知道Dapper是否提供了更好的解决方案,但多亏了思考,没有什么是不可能的 var t = param
DynamicParameters
。所以,我检查答案以获得参数值
foreach (var paramName in parameters.ParameterNames)
{
var value = ((SqlMapper.IParameterLookup)parameters)[paramName];
}
现在,我需要参数DbType。有可能得到这些信息吗?我不知道Dapper是否提供了更好的解决方案,但多亏了思考,没有什么是不可能的
var t = parameters.GetType().GetField("parameters", BindingFlags.NonPublic | BindingFlags.Instance);
if (t != null)
{
foreach (DictionaryEntry dictionaryEntry in (IDictionary)t.GetValue(parameters))
{
var dbType = (DbType)dictionaryEntry.Value?.GetType().GetProperty("DbType")?.GetValue(dictionaryEntry.Value);
}
}
你能做到!请检查以下代码:
private List<DbType> GetParameterType<T>()
{
var type = typeof(T);
var properties = type.GetProperties().Select(property => property.PropertyType.Name).ToList();
var dbTypes = new List<DbType>();
foreach (var prop in properties)
{
var tryParse = Enum.TryParse<DbType>(prop, out var result);
if (tryParse)
dbTypes.Add(result);
}
return dbTypes;
}
private List GetParameterType()
{
var类型=类型(T);
var properties=type.GetProperties().Select(property=>property.PropertyType.Name).ToList();
var dbTypes=new List();
foreach(属性中的var属性)
{
var-tryParse=Enum.tryParse(prop,out-var-result);
if(tryParse)
添加(结果);
}
返回数据库类型;
}
然后,它的调用很简单:
var dbTypes=GetParameterType()
其中T
是您的对象请尽量具体,而不仅仅是提供超链接。你试过什么?您收到了什么错误?我有DynamicParameters
实例。所以,我迭代了它(就像在示例中一样),只是不知道如何获取DynamicParameter
实例的DbType属性。