我写了一个方法做了以下事情。
它的作用
反射
此方法旨在用于高度可自定义的Web环境,并从各种或反序列化的JSON对象获取参数。我非常清楚反射速度很慢,但这个想法只是为了反映返回集的单个对象而不是在数据处理循环中使用,反思问题不是我关心的问题。
问题
除了列出反思的缺点之外,我想知道任何人看到这些代码我可能没有考虑过的问题。请假设对象具有正确的属性。我很难测试这个,因为我编写它来解析我所知道的SQL。我不能写SQL的测试我不知道。它似乎通过了我编写的每一个SQL测试。
代码是否有任何问题
代码
public static void LoadParametersByObject(SqlCommand command, Object obj)
{
var DeclareREG = new Regex("(?<=Declare\\s*)@\\w{1,}");// finds all Declare @name
var ParameterREG = new Regex("(@{1,2}\\w{1,})");//finds all @name and all @@name
List<String> Exclude = (from Match x in DeclareREG.Matches(command.CommandText) select x.Value.Replace("@", "").ToUpper()).ToList();
List<String> Include = (from Match x in ParameterREG.Matches(command.CommandText)
where !x.Value.StartsWith("@@") && !Exclude.Contains(x.Value.Replace("@", "").ToUpper())
select x.Value.Replace("@", "").ToUpper()).Distinct().ToList();
foreach (PropertyInfo prop in (from x in obj.GetType().GetProperties() where Include.Contains(x.Name.ToUpper()) select x).ToArray())
{
command.Parameters.AddWithValue("@" + prop.Name, prop.GetValue(obj));
}
}
代码细分
提前感谢您的帮助