Вы должны использовать отражение для выполнения этой задачи:
Этот код предоставляется без надлежащей проверки , и его следует поместить в метод.
var type = myInstance.GetType();
foreach(var keyValue in values)
{
type.InvokeMember(keyValue.Key,BindingFlags.SetProperty,null,myInstance, new object[]{keyValue.Value});
}
Может быть ошибка в этом коде, но даже если это так, общая идея здесь.
2 примечания: этот код с треском провалится, если свойство не существует в MyClass или если тип свойства не может быть назначен из строки. Поэтому это потребовало бы надлежащей проверки (я знаю, я повторяюсь).
Вы также можете использовать дерево выражений для выполнения задания, особенно если вы устанавливаете много значений для одного и того же известного типа, поскольку деревья выражений могут быть скомпилированы.