`Пожалуйста, новичок в программировании, и также искали последние несколько часов на решении, но не можете найти его; Так вот моя проблема:преобразовать список <Keyvaluepair> в конкретный тип ICollection C#
У меня есть List<KeyValuePair<string, object>>
Я хочу, чтобы преобразовать пару значений во время выполнения в ICollection<T>
Где T тип объекта (пары Value).
Целью преобразования является передача значений в метод PropertyInfo.SetValue (obj, val). Допустимы ICollection
public object TheMEthod(object objreactor, List<KeyValuePair<string, object>> objactor) {
Type tyr2 = typeof(List<>).MakeGenericType(objactor.First().Value.GetType());
ICollection list = (ICollection) Activator.CreateInstance(tyr2);
list = (ICollection) objactor.Select(l => l.Value).Distinct().ToList();
objreactor.GetType().GetProperty(objactor.First().Key)?.SetValue(objreactor, Convert.ChangeType(list, objactor.First().Value.GetType()), null);
//else return exception
return objreactor;
}
Это возвращает объект ошибки должен реализовать IConvertible C#»
Не могли бы вы немного разобраться? Список> уже является ICollection > (список поддерживает этот интерфейс), или вам нужно было преобразовать его в нечто другое? –
Когда я передаю пару значений кода (не нужен ключ) – Ufo
Поделитесь своим кодом. –