首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >可以从Dapper DynamicParameters获取DbType吗?

可以从Dapper DynamicParameters获取DbType吗?
EN

Stack Overflow用户
提问于 2016-02-03 22:31:37
回答 2查看 922关注 0票数 0

我需要遍历Dapper DynamicParameters。因此,我检查this answer以获取参数值。

代码语言:javascript
复制
foreach (var paramName in parameters.ParameterNames)
{
    var value = ((SqlMapper.IParameterLookup)parameters)[paramName];
}

现在,我需要参数DbType。有没有可能得到这个信息?

EN

回答 2

Stack Overflow用户

发布于 2020-01-02 00:02:55

我不知道Dapper是否为此提供了更好的解决方案,但多亏了反射,没有什么是不可能的!

代码语言:javascript
复制
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);  
     }
}
票数 1
EN

Stack Overflow用户

发布于 2020-10-07 22:24:32

你能做到的!请检查以下代码:

代码语言:javascript
复制
 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;
    }

然后,它的调用很简单:var dbTypes = GetParameterType<T>();,其中T是您的对象

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35179812

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档