使用 Invoke 从其他 class 调用函数
Calling a function from other class using Invoke
所以我想做的是 ;
1) 我从用户那里得到一个字符串输入。
2) 如果项目包含与用户输入同名的函数,我正在搜索系统。
3) 如果我找到一个与输入名称相同的函数,我将尝试执行/调用它。
4) 通常这个函数被放置到另一个 class 中,所以我尝试使用 Activators 创建 class 的实例,但调用函数仍然失败。
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();
}
}
}
}
}
}
任何帮助都很棒,谢谢 :-)
参见 Microsoft help here You can call m.Invoke
. or see 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});
所以我想做的是 ;
1) 我从用户那里得到一个字符串输入。
2) 如果项目包含与用户输入同名的函数,我正在搜索系统。
3) 如果我找到一个与输入名称相同的函数,我将尝试执行/调用它。
4) 通常这个函数被放置到另一个 class 中,所以我尝试使用 Activators 创建 class 的实例,但调用函数仍然失败。
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();
}
}
}
}
}
}
任何帮助都很棒,谢谢 :-)
参见 Microsoft help here You can call m.Invoke
. or see 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});