首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >当方法名为字符串时,如何执行它?

当方法名为字符串时,如何执行它?
EN

Stack Overflow用户
提问于 2012-05-14 05:55:48
回答 3查看 615关注 0票数 1

今天,面试官在一次面试(初级网络开发者)中问我这个问题:

当方法名为字符串时(在javascript和C#中),如何执行该方法

我无法回答:

当我搜索的时候,我发现了当JavaScript函数的名称为字符串时,如何执行它这个问题

,但是c# ??是怎么做到的呢?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-05-14 06:01:36

如果您只知道该方法的名称,则只能使用.net Relfection运行该方法。

检查:MethodBase.Invoke方法(Object,Object[])

例子:

代码语言:javascript
运行
复制
class Class1
   {
    public int AddNumb(int numb1, int numb2)
    {
      int ans = numb1 + numb2;
      return ans;
    }

  [STAThread]
  static void Main(string[] args)
  {
     Type type1 = typeof(Class1); 
     //Create an instance of the type
     object obj = Activator.CreateInstance(type1);
     object[] mParam = new object[] {5, 10};
     //invoke AddMethod, passing in two parameters
     int res = (int)type1.InvokeMember("AddNumb", BindingFlags.InvokeMethod,
                                        null, obj, mParam);
     Console.Write("Result: {0} \n", res);
   }
  }
票数 6
EN

Stack Overflow用户

发布于 2012-05-14 06:04:40

假设您有该类型,则可以使用反射按其名称调用方法。

代码语言:javascript
运行
复制
class Program
{
    static void Main()
    {
        var car = new Car();
        typeof (Car).GetMethod("Drive").Invoke(car, null);
    }
}

public class Car
{
    public void Drive()
    {
        Console.WriteLine("Got here. Drive");
    }
}

如果正在调用的方法包含参数,则可以按照与方法签名相同的顺序将参数作为对象数组传递给Invoke

代码语言:javascript
运行
复制
var car = new Car();
typeof (Car).GetMethod("Drive").Invoke(car, new object[] { "hello", "world "});
票数 2
EN

Stack Overflow用户

发布于 2012-05-14 06:06:05

好文章。好好读一读。不仅可以从字符串调用方法,还可以从许多场景调用方法。

http://www.codeproject.com/Articles/19911/Dynamically-Invoke-A-Method-Given-Strings-with-Met

如何调用其名称作为参数的共享函数

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10578074

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档