C# 能否从Dapper DynamicParameters获取DbType?

C# 能否从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

我需要遍历Dapper
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属性。