Существует ли принятый метод добавления объектов, возможно производных от объекта, в коллекцию без , позволяющих создавать экземпляры базовых или производных объектов самостоятельно?Я думаю, что это почти противоречие в терминах.
О единственном методе, который мне удалось придумать, - это добавить в родительскую коллекцию базовую реализацию дочернего элемента, например:*
Это заставляет дочерний объект всегда создаваться с родительским объектом, но кажется довольно грязной реализацией, чтобы добавить дочерний класс в родительскую коллекцию из дочернего.Я знаю, что могу передать переменную Type-type методу, и это может быть путь, но я не уверен, как создать / привести к переданному типу.
Обновление:Я играю с кодом, который выглядит следующим образом как возможный универсальный метод ChildCollection.Add, на случай, если это даст кому-то лучшее представление о том, что я хочу ... посмотрим, будет ли он работать в долгосрочной перспективе:
// Currently testing directly in Parent class;
// can later be moved/modified for Parent's ChildCollection class.
public Child AddTest(string info, Type derivedType)
{
ConstructorInfo ci = derivedType.GetConstructor(new Type[] { typeof(Parent) });
Child myBaby = (Child) ci.Invoke(new Object[] { this });
myBaby.Initialize(info);
return myBaby;
}
Это можно затем вызвать с помощью кода, подобного:
Child newChild = Parent.AddTest("Hello World", typeof(DerivedChild));