如果我有一个对象和它的类型,想要按名称(如“Method1”)调用某个方法,该怎么做呢?
我想做的事情是这样的:
Object o;
Type t;
// At this point I know, that 'o' actually has
// 't' as it's type.
// And I know that 't' definitely has a public method 'Method1'.
// So, I want to do something like:
Reflection.CallMethodByName(o, "Method1");
这是否有可能? 我意识到这会很慢,不方便,但不幸的是,在我的情况下我没有其他实现方式。
dynamic
确实更快(20-25倍),无论是将dynamic
赋值还是将GetMethod
放置在测试循环内(这些会影响速度差异是20倍还是25倍)。当然,在某些情况下可能不会更快,并且在大多数程序中它可能不会成为瓶颈。没有什么花哨的东西,只是在static
、new StringBuilder
上调用或调用函数sb.Append("A");
(并在测试完成时输出长度)。 - Brian