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