在C#中,没有一个直接等同于Ruby中的respond_to?
的方法,但是可以使用System.Reflection.MethodBase.GetMethodFromHandle
方法从MethodHandle
对象中获取方法信息,然后使用System.Reflection.MethodBase.Invoke
方法调用该方法。虽然这种方法与respond_to?
在Ruby中的工作方式不同,但可以实现类似的功能。
以下是一个示例代码,它使用System.Reflection.MethodBase.GetMethodFromHandle
方法从MethodHandle
对象中获取方法信息,然后使用System.Reflection.MethodBase.Invoke
方法调用该方法:
using System;
using System.Reflection;
class Program
{
static void Main()
{
// 获取MethodHandle对象
MethodHandle methodHandle = GetType().GetMethod("TestMethod").MethodHandle;
// 获取MethodBase对象
MethodBase methodBase = methodHandle.Method;
// 调用MethodBase对象
object result = methodBase.Invoke(null, null);
// 输出结果
Console.WriteLine("Result: " + result);
}
public static void TestMethod()
{
Console.WriteLine("TestMethod is called.");
}
}
在上面的示例代码中,我们首先使用GetType().GetMethod("TestMethod").MethodHandle
获取TestMethod
方法的方法句柄,然后使用MethodBase.GetMethodFromHandle
方法从该句柄中获取方法信息,并使用MethodBase.Invoke
方法调用该方法。最后,我们输出调用结果。
虽然这种方法与respond_to?
在Ruby中的工作方式不同,但可以实现类似的功能。
领取专属 10元无门槛券
手把手带您无忧上云