我想从另一个类中调用类中的一个方法。 事情是,我事先不知道方法名称,我从外部API得到它..
示例:
class A
public class Whichone
{
public static string AA() { return "11"; }
public static string BB() { return "22"; }
public static string DK() { return "95"; }
public static string ZQ() { return "51"; }
..............
}
class B
public class Main
{
........
........
........
string APIValue = API.ToString();
string WhichOneValue = [CALL(APIValue)];
}
让我们说APIValue是BB,那么WhichOneValue的值应该是22。 这样做的正确语法是什么?
答案 0 :(得分:1)
你可以使用反射:
string APIValue = "BB";
var method = typeof(Whichone).GetMethod(APIValue);
// Returns "22"
// As BB is static, the first parameter of Invoke is null
string result = (string)method.Invoke(null, null);
答案 1 :(得分:1)
这称为reflection。在您的情况下,代码将如下所示:
string WhichOneValue =
(string)typeof(Whichone).GetMethod(APIValue).Invoke(null, null);
反射的一个缺点是它比正常的方法调用慢。因此,如果分析显示调用此类方法对您来说太慢,则应考虑替代方法,例如Dictionary<string, Action>
或Expression
s。