【发布时间】:2018-01-14 13:51:20
【问题描述】:
在我的 C# 程序中,我想通过反射将项目添加到 HashSet<T>。使用List<T> 这不是问题,因为我可以将列表转换为非通用IList 接口:
foreach (PropertyInfo property in myClass.GetType().GetProperties())
{
object value = property.GetValue(myClass);
IList valueAsIList = value as IList;
if (valueAsIList != null)
valueAsIList.Add(item2Insert);
}
现在我想对HashSet<T> 做同样的事情,但是没有像IList 这样的非通用合同,我可以将其转换为并调用Add 方法。还有其他方法吗?
【问题讨论】:
-
Hashset<T>也是ICollection<T>。 -
@stuartd 和 Chris:OP 之所以提到
IList,是因为List<T>实现了非泛型IList接口,该接口可用于将无类型对象添加到集合中。但是HashSet<T>没有它实现的这样一个非通用合约。 -
啊,我没有完全理解这个问题,谢谢你的注意。
标签: c# generics reflection hashset