Когда я работаю со списком неизвестного типа, я могу использовать интерфейс IList следующим образом:
public void DoSomething(object o)
{
if (o is IList oAsList)
{
foreach (object listItem in oAsList)
Console.WriteLine(listItem.ToString());
oAsList.Clear();
Type typeOfList = oAsList.GetType().GetGenericArguments()[0];
oAsList.Add(GetRandomInstanceOfType<typeOfList>());
}
}
Это явно не работает для HashSets, так как нет ничего похожего на IHashSet. Я мог бы привести его к IEnumerable, но тогда мне не хватает таких методов, как .Clear () и .Add (), которые мне нужны, потому что я хочу скопировать элементы из одного HashSet любого типа в другой HashSet этого типа.
Как я могу сделать это с HashSets?