Хороший синтаксис для списка<KeyValuePair <строка, строка >>?

У меня есть метод:

public void MyMethod(params KeyValuePair<string, string>[] properties);

Который я называю как:

MyMethod(
    new KeyValuePair("Name","Jack"), 
    new KeyValuePair("City", "New York"), 
    new KeyValuePair("Gender", "Male"), 
);

Я бы предпочел более красивый синтаксис для вызова метода, что-то похожее на:

MyMethod({"Name","Jack"}, {"City","New York"}, {"Gender","Male"});

Наиболее близким к этому является использование изменения сигнатуры метода для принятия словаря в качестве аргумента метода и вызова:

MyMethod(new Dictionary<string,string>()
{
    {"Name", "Jack"},
    {"City", "New York"},
    {"Gender", "Male"},
};

Есть ли другие альтернативы?

2 ответа

Решение

Вы можете принять только строки в качестве параметров, а затем динамически заполнить словарь, как это.

public void MyMethod(params string[] properties) 
{
    var pairs = new Dictionary<string, string>();

    for(int i = 0; i < properties.length - 1; i += 2) 
    {
        pairs.Add(properties[i], properties[i + 1]);
    }
}

MyMethod("Name", "Jack", "City", "New York", "Gender", "Male");

Другим вариантом является использование двумерного массива

static void PrintArray(int[,] arr)

PrintArray(new int[,] { { 1, 2 }, { 3, 4 }, { 5, 6 }, { 7, 8 } });

Но я предпочитаю словарный подход

Другие вопросы по тегам