Так что я ужасно разработанный класс, который я не могу изменить, что имеет такие свойства, как это:Как перебрать численно именованные свойства объекта
object.Color1
object.Color2
object.Color3
и т.д ...
Как я могу перебирать те, у которых есть цикл for. Другими словами, что-то вроде этого:
for (int i = 0; i <= 40; i++)
{
string PropertyName = "Color" + i;
if (object.PropertyName != "")
{
// do something
}
}
Очевидно, что этот код не будет работать, но это дает вам представление о том, что я после. Я должен сделать некоторую обработку для каждого свойства, и я не хочу повторять свой код 40 раз. :) Цикл был бы идеальным, я просто не уверен, как создать имя свойства на лету.
EDIT: Хорошо, таким образом я попытался следующий код:
for (int i = 1; i <= 20; i++)
{
var type = pendingProduct.GetType();
var colorProperty = type.GetProperty("Color" + i);
string colorValue = colorProperty.GetValue(type, null).ToString();
var colorSkuProperty = type.GetProperty("Color" + i + "SKU");
string colorSkuValue = colorSkuProperty.GetValue(type, null).ToString();
if (String.IsNullOrEmpty(colorValue)) continue;
ProductColor color = new ProductColor {Color = colorValue, ProductSizes = productSizes};
if (!String.IsNullOrEmpty(colorSkuValue)) color.SKU = colorSkuValue;
}
Я получаю сообщение об ошибке «Объект не соответствует целевому типу» на этой линии:
string colorValue = colorProperty.GetValue(type, null).ToString();
Я здесь что-то не так?
Вам нужно получить значение экземпляра объекта, а не экземпляр 'System.Type'. – SLaks