繁体   English   中英

使用字符串中的可选参数调用方法

[英]Calling a method with optional parameters from a string

我有多个方法,一些有可选参数,有些没有。 如何通过仅将函数名称作为字符串来调用这些方法?

目前我有这个:

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());

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM