DynamicObject - вызов метода на основе значения аргумента - PullRequest
3 голосов
/ 09 марта 2011

Я хотел бы иметь возможность хранить словарь действий и вызывать те, которые основаны на ключе для словаря. Если ключ не найден, никакое действие не вызывается. У меня была идея выполнить вызов с использованием объекта, который расширяет DynamicObject и получать словарь действий во время создания, но тогда все примеры использования DynamicObject основаны на свойствах, а не на методах. Я хотел бы иметь возможность сделать что-то вроде этого:

`dynamicDictionary.InvokeMethod(commandName);`

1 Ответ

4 голосов
/ 11 марта 2011

Фреймворк с открытым исходным кодом Dynamitey сделает это. Для словаря действий вы можете создать встроенный MS ExpandoObject или Dynamitey с DynamicObjects.BaseDictionary, который будет работать как посредник словаря.

Если вы заполняете любое из действий как свойства, они могут быть вызваны как методы. Если вам нужно вызвать их по строковому имени, вы можете использовать Dynamic.InvokeAction(dynamicDictionary, commandName). Это использует DLR для вызова метода, который быстрее, чем отражение в статических объектах, и делает это возможным для динамических объектов.

...