Получите значение свойства только с объектом и названием свойства (но не тип)

Предположим, что у меня есть метод, который передает от имени свойства (как a string) и объект, что свойство идет (как object).

Как я мог получить значение свойства?

Вот некоторый код для создания этого немного более конкретным:

protected override void Paint(Graphics g, Rectangle bounds, CurrencyManager source, int rowNum, Brush backBrush, Brush foreBrush, bool alignToRight)
{
   // The next line is made up code
   var currentValue = source.Current.CoolMethodToTakePropertyNameAndReturnValue(MappingName);

   // Paint out the retrieved value
   g.DrawString(currentValue.ToString() , _gridFont, new SolidBrush(Color.Black), bounds.Left + 1, bounds.Top);
}

MappingName является названием свойства, для которого я хочу получить значение. То, в чем я нуждаюсь, CoolMethodToTakePropertyNameAndReturnValue.

Какие-либо идеи? Я работаю на Компактной Платформе. Я также предпочел бы избегать отражения (но если это - мое единственное обращение за помощью затем пусть будет так).

Спасибо за любую справку.

1
задан Vaccano 3 June 2010 в 20:23
поделиться

2 ответа

Я бы пошел с отражением

  foreach (PropertyInfo info in myObject.GetType().GetProperties())
  {
    if (info.CanRead && info.Name == MappingName)
    {
      return info.GetValue(myObject, null);
    }
  }  
2
ответ дан 3 September 2019 в 00:04
поделиться

Я думаю, что отражение - единственный способ добиться этого:

To Get  value
===============

foreach (PropertyInfo info in myObject.GetType().GetProperties())
{
   if (info.CanRead)
   {
      object o = propertyInfo.GetValue(myObject, null);
   }
}

To Set  value
================

object myValue = "Something";
if (propertyInfo.CanWrite)
{
    this.propertyInfo.SetValue(myObject, myValue, null);
}

Get fitting PropertyInfo:

=============================

foreach(PropertyInfo p in typeof(MyObject).GetProperties())
{
    if ( p.Name == "MyProperty") { return p }
}
0
ответ дан 3 September 2019 в 00:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: