GetValue по отражению - PullRequest
       1

GetValue по отражению

0 голосов
/ 02 октября 2011

Я хочу получить каждый ToolStripMenuItem значения моей формы MDI, просматривая их и используя отражение следующим образом:

FieldInfo[] menuitems = GetType().GetFields(BindingFlags.GetField | 
    BindingFlags.NonPublic | BindingFlags.Instance);
foreach (var item in menuitems )
  if (item.FieldType.Equals(typeof(ToolStripMenuItem)))
      MessageBox.Show(
        item.FieldType.GetProperty("Tag").GetValue(item, null).ToString());        

но я получил ошибку "Объект не соответствует типу цели", я запутался и не знаю, какой объект указать в качестве исходного объекта для получения значения.

, пожалуйста, проведите меня через ... заранее спасибо.

Ответы [ 2 ]

5 голосов
/ 02 октября 2011

Это не тот случай, когда нужно размышлять.

Чтобы получить элементы меню, вы должны сначала получить ссылку на свою ToolStrip и оттуда перебрать ее Controls коллекцию.

код будет выглядеть примерно так:

foreach(Control ctrl in _myToolStrip.Controls)
{
    MessageBox.Show(ctrl.Tag);
}
1 голос
/ 02 октября 2011

используйте что-то вроде GetProperty("Tag").GetGetMethod().Invoke (item, null).ToString().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...