我需要遍历Dapper DynamicParameters。因此,我检查this answer以获取参数值。
foreach (var paramName in parameters.ParameterNames)
{
var value = ((SqlMapper.IParameterLookup)parameters)[paramName];
}现在,我需要参数DbType。有没有可能得到这个信息?
发布于 2020-01-02 00:02:55
我不知道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);
}
}发布于 2020-10-07 22:24:32
你能做到的!请检查以下代码:
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是您的对象
https://stackoverflow.com/questions/35179812
复制相似问题