Как привести `ICollection` к `IEnumerable`, не зная T?C#

Место общения программистов C#
Ответить
Anonymous
 Как привести `ICollection` к `IEnumerable`, не зная T?

Сообщение Anonymous »

У меня есть следующий метод:

Код: Выделить всё

public IEnumerable ToKeyValuePairs(object obj)
{
List keyValuePairs = new();

IEnumerable
 props = obj.GetType().GetProperties()
.Where(p => p.GetValue(obj, null) != null);

foreach (PropertyInfo p in props)
{
object value = p.GetValue(obj, null);
ICollection collection = value as ICollection;
if (collection != null)
{
AddRange(p.Name, ...???...)); // How to
// cast `ICollection collection` to `IEnumerable`?
}
else
{
keyValuePairs.Add(
new(p.Name, value.ToString()));
}
}

return keyValuePairs;
}
Тогда у меня есть другой метод, который принимает IEnumerable arrayElements:

Код: Выделить всё

public List AddRange(
string keyName,
IEnumerable arrayElements)
{
// ... the code is omitted for the brevity
}
Поэтому мой вопрос заключается в том, как привести коллекцию ICollection, чтобы добавить этот параметр в метод AddRange, который принимает IEnumerable?

Подробнее здесь: https://stackoverflow.com/questions/797 ... -knowing-t
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»