3

我希望能够存储一个 Actions 字典并能够根据字典的键调用那些。如果未找到密钥,则不会调用任何操作。我有一个想法,即使用扩展 DynamicObject 的对象执行调用并在构造时获取操作字典,但是所有有关如何使用 DynamicObject 的示例都基于属性,而不是方法。我希望能够做这样的事情:

`dynamicDictionary.InvokeMethod(commandName);`
4

1 回答 1

4

开源框架Dynamitey将做到这一点。对于动作字典,您可以使用内置的 MS 构建,也可以使用ExpandoObject类似于Dynamitey字典DynamicObjects.BaseDictionary代理的方法。

如果您将操作填充为属性,则它们可以作为方法调用。如果您需要通过字符串名称调用它们,您可以使用Dynamic.InvokeAction(dynamicDictionary, commandName). 这使用 DLR 调用比静态对象上的反射更快的方法,并使其在动态对象上成为可能。

于 2011-03-11T15:13:58.297 回答