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