Использовать строковый массив в качестве параметров функции - PullRequest
0 голосов
/ 28 августа 2018

Я провел некоторое исследование, и я очень удивлен, что не нашел решения для этой простой проблемы.


РЕДАКТИРОВАТЬ: Вопрос о том, возможно ли это или C # не предоставляет какой-либо способ сделать то, что я пытаюсь сделать

В следующем примере я хочу вызвать IWannaBeCalled из Linker с параметрами из массива parameters. В основном эквивалент вызова

IWannaBeCalled(parameters[0], parameters[1]);

но количество параметров не должно быть фиксированным: я хочу иметь возможность добавлять или удалять параметры, не меняя метод Linker вообще
Вот пример кода:

class Program
{
    private void IWannaBeCalled(string arg1, string arg2)
    {
        // Do stuffs using arg1 and arg2
    }

    private void Linker(params string[] parameters)
    {
        // ??
    }

    static void Main()
    {
        Linker("Hello", "world");
    }
}

Любая помощь будет принята с благодарностью ~


РЕДАКТИРОВАТЬ: Добавление реального кода, в котором мне нужно это сделать:

private PlanningDatas GetPlanningDatas(string dataSourceFunction, params string[] parameters)
{
    if (!String.IsNullOrEmpty(dataSourceFunction))
    {
        string methodName = dataSourceFunction.Split('.').Last();
        string classString = dataSourceFunction.Substring(0, dataSourceFunction.Length - methodName.Length - 1);

        Type targetType = Type.GetType(classString);
        MethodInfo targetMethod = targetType.GetMethod(methodName);

        return (PlanningDatas)targetMethod.Invoke(null, parameters);
    }
    else
    {
        //return (PlanningDatas)DefaultDataSource( --parameters-- );
    }
}

private PlanningDatas DefaultDataSource(string vehiculeModel)
{
    // Get the Data
}

Объяснение: Этот пример взят из проекта mvc, поэтому имя метода задается с помощью ajax-вызова , поэтому оно должно быть строкой. Если задана строка, она вызывает метод, но dataSourceFunction имеет значение null, она вызывает функцию по умолчанию. Весь некомментированный код полностью функционален

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...