在 PHP 中,我可以尝试调用对象上可能存在的任何方法,如下所示:
$object->{$method}();
其中 $object
是我们的 PHP 对象,$method
是我们要调用的方法的名称。我可以通过这种方式动态调用任何方法。
是否有与此等效的 C#?还是我只是“做错了”?我有一个通过反射加载的插件/模块,我想调用一个未在接口(interface)中定义的方法。
谢谢!
最佳答案
与 PHP 不同,C# 是一种静态类型语言,这意味着需要在编译时知道类型。虽然这种方法已经在 C# 4.0 中引入。这是 dynamic关键词。它允许您声明一个动态类型的变量并调用您喜欢的任何方法,编译器不会抗议。解析将在运行时完成:
dynamic obj = FetchInstanceFromSomewhere();
obj.Method();
另一种更经典的方法是使用反射,但这很快就会变成一场噩梦。
关于C# 等效于 PHP 动态方法调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3899814/