Предположим, что у меня есть метод, который передает от имени свойства (как 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
.
Какие-либо идеи? Я работаю на Компактной Платформе. Я также предпочел бы избегать отражения (но если это - мое единственное обращение за помощью затем пусть будет так).
Спасибо за любую справку.
Я бы пошел с отражением
foreach (PropertyInfo info in myObject.GetType().GetProperties())
{
if (info.CanRead && info.Name == MappingName)
{
return info.GetValue(myObject, null);
}
}
Я думаю, что отражение - единственный способ добиться этого:
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 }
}