.NET 4.0
представил неуниверсальный IList
, который предоставляет возможность добавлять значения в список без необходимости знать универсальный тип.Это полезно, потому что позволяет мне написать метод, такой как:
void CreateListFromBytes(IntPtr bytes, Type outputType, out object outputObject)
{
Type elementType = outputType.GenericTypeArguments[0];
int numberOfElements = ReadHeaderBytes(bytes);
bytes += Marshal.SizeOf(typeof(int));
IList outputList = (IList) Activator.CreateInstance(outputType);
for (int i = 0; i < numberOfElements; i++)
{
object element = ReadDataBytes(bytes, elementType);
bytes += Marshal.SizeOf(elementType);
outputList.Add(element);
}
outputObject = outputList;
}
Однако, когда я пытаюсь реализовать метод с похожим стилем для HashSet
или ISet
, неттакой неуниверсальный интерфейс я могу найти, который выставляет и метод Add()
.
Мне интересно, существует ли такой интерфейс, который я, возможно, пропустил.Если нет, мне интересно, как я могу добавить элементы к объекту, который я точно знаю, это Set
(поскольку я создал его Activator.CreateInstance()
)