C# 使用字符串中的可选参数调用方法
我有多种方法,有些带有可选参数,有些没有。我如何通过仅将函数名作为字符串来调用这些方法 目前我有:C# 使用字符串中的可选参数调用方法,c#,.net,methods,invoke,optional-parameters,C#,.net,Methods,Invoke,Optional Parameters,我有多种方法,有些带有可选参数,有些没有。我如何通过仅将函数名作为字符串来调用这些方法 目前我有: public Method method = Method.QuickSort; public enum Method { BubbleSort, MergeSort, QuickSort, InsertionSort, RadixSortLSD, CocktailSort, CombSort, OddEvenSort }
public Method method = Method.QuickSort;
public enum Method
{
BubbleSort,
MergeSort,
QuickSort,
InsertionSort,
RadixSortLSD,
CocktailSort,
CombSort,
OddEvenSort
}
MethodInfo mi = this.GetType().GetMethod(method.ToString());
mi.Invoke(this, null);
所以,这一切都很好,直到我有一个带有可选参数的函数。。我“修复”它的方式如下:
try
{
mi.Invoke(this, null);
}
catch
{
try
{
mi.Invoke(this, new object[] { Type.Missing });
}
catch
{
try
{
mi.Invoke(this, new object[] { Type.Missing, Type.Missing });
}
catch
{
mi.Invoke(this, new object[] { Type.Missing, Type.Missing, Type.Missing });
}
}
}
但显然,这是一个可怕的“解决方案”。因此,我的问题是,如何创建所需的功能?(通过带有可选参数的字符串名调用方法)您可以从
MethodInfo
中确定参数的数量:
MethodInfo mi = this.GetType().GetMethod("name");
mi.Invoke(this, mi.GetParameters().Select(p => Type.Missing).ToArray());
相比之下,我不认为这样做是为了提供一个接口和适当的排序算法实现。