Хороший синтаксис для списка<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 } });
Но я предпочитаю словарный подход