Предполагая, что вы можете использовать LINQ, вы можете засунуть свои аргументы в Dictionary<string, string>
, а затем соединить аргументы вместе:
Dictionary<string, string> args = new Dictionary<string, string>
{
{"computer", serviceConfig.Computer},
{"ver", string.Format("{0}.{1}.{2}",
serviceConfig.Version.Major,
serviceConfig.Version.Minor,
serviceConfig.Version.Build)},
{"from", userName},
{"realcomputername", Environment.MachineName},
{"type", type},
{"Channels", serviceConfig.ChannelsString},
{"Hotkeys", serviceConfig.HotKeysString},
{"ID", serviceConfig.AlarmGroupName},
};
string login = string.Join("&", args.Select(arg =>
string.Format("{0}={1}", arg.Key, arg.Value)).ToArray());
Это будет на несколько минут медленнее и потребляет больше памяти, чем простая строка. Формат, но похоже, что вы собираетесь сделать HTTP-запрос, поэтому я почти гарантирую, что это не будет узким местом.
Эта последняя строка также может быть извлечена в метод расширения, который вы можете использовать в любое время, когда захотите создать строку запроса, подобную этой.
Кроме того, важно отметить, что, поскольку Словарь не сохраняет порядок вставки, вы не гарантированы, что параметры в строке запроса будут в этом точном порядке. Это не должно иметь значения, но если это так, вы можете заменить словарь на List<KeyValuePair<string, string>>
( OrderedDictionary также должен работать).