考虑这段代码
public object GetDetailClasses(IList DefaultValue, IList ChangedValue)
{
foreach (var DefaultValueItem in DefaultValue)
{
foreach (var ChangedValueItem in DefaultValue)
{
if (ChangedValueItem.NameofProp == DefaultValueItem.NameofProp)
{
//do stuff...
}
}
}
}
如何为这个方法迭代这两个Ilist参数,而不将它们转换为相关类并比较它们内部的项目(因为每次它们都是这样的) 包含来自不同类的数据)。有什么方法可以迭代这些参数并获取不对称的属性,或者我可以使用像反射这样的代码。
答案 0 :(得分:0)
以下是使用反射的解决方案:
foreach (var defaultValueItem in DefaultValue)
{
foreach (var changedValueItem in DefaultValue)
{
var defaultProp = defaultValueItem.GetType().GetProperties().SingleOrDefault(x => x.Name == "NameOfProp");
var changedProp = changedValueItem.GetType().GetProperties().SingleOrDefault(x => x.Name == "NameOfProp");
if (defaultProp == null || changedProp == null)
{
continue;
}
var defaultValue = defaultProp.GetValue(defaultValueItem);
var changedValue = changedProp.GetValue(changedValueItem);
if (defaultValue == changedValue)
{
//do stuff...
}
}
}
不漂亮,但应该有效。
答案 1 :(得分:0)
我建议您不惜一切代价尝试使用仿制药,但是如果您认为仿制药不适合您,那么反思和反思我会使用动态所以您不必像以前那样投射对象:
public object GetDetailClasses(IList DefaultValue, IList ChangedValue)
{
foreach (var DefaultValueItem in DefaultValue)
{
foreach (var ChangedValueItem in DefaultValue)
{
if (ChangedValueItem.AsDynamic().NameofProp == DefaultValueItem.AsDynamic().NameofProp)
{
//do stuff...
}
}
}
}
您需要参考: