Я вижу, что у вас уже есть несколько полей в вашем классе, которые вы используете для хранения переменных. В этом случае то, что вы делаете, хорошо.
В противном случае, вы можете иметь 1 HashTable (возможно, добавьте индексатор C # как поворот) для хранения всех из них, и ваш цикл закончится так:
foreach (string param in params.Split(';'))
{
string[] parts = param.Split('=');
string key = parts[0].Trim().ToLower();
string value = parts[1].Trim();
MyHashTable[key] = value;
}
Проблема этого подхода в том, что у вас должен быть только 1 тип значения. Например, если ваш список параметров может содержать как строковые, так и int-типы, это усложняет код, особенно вам необходимо выполнить проверку ошибок, проверку и прочее.
Лично я бы придерживался того, что у вас уже есть.