Привет всем и спасибо, что посмотрели.C# FOREACH по нескольким спискам <> типы
Я не думаю, что это возможно, но я хотел бы сделать идентичный FOREACH через несколько возвращенных типов, без необходимости вырезать и вставлять код 4 раза. Все свойства dto2, dto3, dto4 и dto5 списки возвращаются одни и те же, за DataValue, что другой тип данных для каждого (INT, VARCHAR, BOOL и т.д.)
var dto2 = rd.EngDetailBitsList(dto.EngId);
var dto3 = rd.EngDetailDateTimesList(dto.EngId);
var dto4 = rd.EngDetailVarCharsList(dto.EngId);
var dto5 = rd.EngDetailVarCharMaxesList(dto.EngId);
foreach (var x in dto2)
{
var propertyInfo = dto.GetType().GetProperty(x.ShortDescript,
BindingFlags.Instance | BindingFlags.Public | BindingFlags.IgnoreCase);
if (propertyInfo != null)
{
propertyInfo.SetValue(dto, x.DataValue);
}
}
foreach (var x in dto3)
{
var propertyInfo = dto.GetType().GetProperty(x.ShortDescript,
BindingFlags.Instance | BindingFlags.Public | BindingFlags.IgnoreCase);
if (propertyInfo != null)
{
propertyInfo.SetValue(dto, x.DataValue);
}
}
foreach (var x in dto4)
{
var propertyInfo = dto.GetType().GetProperty(x.ShortDescript,
BindingFlags.Instance | BindingFlags.Public | BindingFlags.IgnoreCase);
if (propertyInfo != null)
{
propertyInfo.SetValue(dto, x.DataValue);
}
}
foreach (var x in dto5)
{
var propertyInfo = dto.GetType().GetProperty(x.ShortDescript,
BindingFlags.Instance | BindingFlags.Public | BindingFlags.IgnoreCase);
if (propertyInfo != null)
{
propertyInfo.SetValue(dto, x.DataValue);
}
}
Каковы типы 'dto2'-'dto5'? Они реализуют общий интерфейс с общим базовым классом с свойствами «ShortDescription» и «DataValue»? – MarcinJuraszek
'ShortDescript' может возвращать разные значения, не так ли? Таким образом, вы можете установить разные свойства на 'dto'. – MarcinJuraszek
@BrianRogers Я не понимаю. Для меня это имеет смысл. Несмотря на то, что тип всех элементов в списке одинаковый, свойство «ShortDescript» может возвращать разные значения «string», указывающие на разные свойства на 'dto'. – MarcinJuraszek