За исключением:
- Изменение сигнатуры метода для принятия массива
- Добавление перегрузки, которая принимает массив, извлекает значения и вызывает исходную перегрузку
- Используя рефлексию для вызова метода
, тогда, к сожалению, нет, вы не можете этого сделать.
Передача параметров на основе ключевых слов и позиций, как в Python, не поддерживается в .NETЗа исключением размышлений.
Обратите внимание, что, вероятно, есть несколько веских причин, почему это не поддерживается, но одна, которая приходит мне в голову, это просто «зачем вам это нужно?».Как правило, этот шаблон используется только при переносе метода на другой уровень, а в .NET у вас есть строго типизированные делегаты, поэтому, как правило, все, что остается, - это код на основе отражений, и даже в этом случае вы обычно обладаете сильным контролемвызываемый метод.
Так что моя внутренняя реакция, даже если я отвечу на ваш вопрос, заключается в том, что вы не должны этого делать и находить лучший, более дружественный к .NET способ выполнить то, что вы хотите.
Вот пример использования отражения:
using System;
using System.Reflection;
namespace ConsoleApplication1
{
class Program
{
public Int32 Add(Int32 a, Int32 b) { return a + b; }
static void Main(string[] args)
{
Program obj = new Program();
MethodInfo m = obj.GetType().GetMethod("Add");
Int32 result = (Int32)m.Invoke(obj, new Object[] { 1, 2 });
}
}
}