使用Invoke从其他类调用函数

时间:2018-08-02 12:48:16

标签: c# reflection invoke

所以我想做的是;

1)我从用户那里得到了一个字符串输入。

2)如果项目包含与用户输入名称相同的功能,我正在搜索系统。

3)如果我找到一个具有相同输入名称的函数,则试图执行/调用它。

4)通常,此函数放置在另一个类中,因此我尝试使用Activators创建类的实例,但是invoke函数仍然失败。

5)调用功能给我错误;

Can not invoke method : (methodName) method could not be called !

这是我目前正在处理的代码;

 public void Execute()
 {
     // If we are only looking for function inputs.
     if (!m_canReadCls)
     {
         // If there is already a class linked into Developer Console.
         if (s_linkedType != null)
         {
             MethodInfo[] tmp = ReflectionExtensions.GetFunctions(s_linkedType);

             // Using linear search algorithm for executing functions.
             // Need to optimize it !
             if (tmp!= null)
             {
                 string funcName = m_uProps.m_inptField.text;
                 int i;
                 for (i = 0 ;i < tmp.Length;i++)
                 {
                     if ( tmp[i].Name == funcName)
                     {
                         var instance = Activator.CreateInstance( s_linkedType);
                         MethodInfo m = instance.GetType().GetMethod( funcName);
                         Invoke(m.Name, 0.0f);

                         Reset();
                     }
                 }
             }
         }
     }
 }

任何帮助都很好,谢谢:-)

1 个答案:

答案 0 :(得分:0)

请参见Microsoft help here,您可以致电m.Invoke。或查看this post

更多详情

public object Invoke(
     object obj,
     object[] parameters
)

Type magicType = Type.GetType("MagicClass");
ConstructorInfo magicConstructor = magicType.GetConstructor(Type.EmptyTypes);
object magicClassObject = magicConstructor.Invoke(new object[]{});

// Get the ItsMagic method and invoke with a parameter value of 100

MethodInfo magicMethod = magicType.GetMethod("ItsMagic");
object magicValue = magicMethod.Invoke(magicClassObject, new object[]{100});