#c#-3.0
#c #-3.0
Вопрос:
В моем коде я получаю тип объекта (Party object) в цикле for и получаю информацию о свойстве конкретного свойства «firstname». Все объекты в коллекции Parties[] возвращают один и тот же тип, поэтому я хотел бы получить тип вне цикла do while только один раз и все равно должен иметь возможность получить свойство «firstname» от правильного объекта party. Возможно ли это сделать таким образом? Спасибо за любую помощь.
public List<Party> Parties { get; set; }
PropertyInfo info = null;
i = 1
do
{
foreach (Field field in TotalFields)
{
info = Parties[i - 1].GetType().GetProperty("firstname");
//some other code here
}
i ;
} while (i <= Parties.Count);
Ответ №1:
Когда вы получаете значение для свойства через PropertyInfo
объект, вам нужно передать экземпляр объекта, из которого можно извлечь значение. Это означает, что вы можете повторно использовать один и тот же PropertyInfo
экземпляр для нескольких объектов, учитывая, что они того же типа, для которого PropertyInfo
был создан:
// Note how we get the PropertyInfo from the Type itself, not an object
// instance of that type.
PropertyInfo propInfo = typeof(YourType).GetProperty("SomeProperty");
foreach (YourType item in SomeList)
{
// this assumes that YourType.SomeProperty is a string, just as an example
string value = (string)propInfo.GetValue(item, null);
// do something sensible with value
}
Ваш вопрос помечен как C # 3, но для полноты картины стоит упомянуть, что в C # 4 это можно несколько упростить, используя dynamic
:
foreach (dynamic item in SomeList)
{
string value = item.SomeProperty;
// do something sensible with value
}
Комментарии:
1. Большое вам спасибо. Думаю, теперь я лучше понимаю.