我希望能够存储Actions的字典,并能够根据字典的键来调用它们。如果未找到密钥,则不会调用任何操作。我有一个使用扩展DynamicObject的对象执行调用的想法,并在构造时获取动作字典,但是所有如何使用DynamicObject的示例都基于属性,而不是方法。 我希望能够做到这样的事情:
`dynamicDictionary.InvokeMethod(commandName);`
答案 0 :(得分:4)
开源框架Dynamitey将执行此操作。对于操作词典,您可以使用MS内置ExpandoObject
或Dynamitey
构建DynamicObjects.BaseDictionary
,它将像字典的代理一样工作。
如果您将操作填充为属性,则可以将它们作为方法调用。如果需要通过字符串名称调用它们,则可以使用Dynamic.InvokeAction(dynamicDictionary, commandName)
。这使用DLR来调用一个方法,它比静态对象上的反射更快,并且可以在动态对象上实现。