Код: Выделить всё
public class ListHolder
{
List a = new List();
}
public abstract class BaseType
{
public BaseType(ListHolder listIn)
{
if (listIn.a.OfType().Any())
{
listIn.a.OfType().ToList()[0].Reapply();
} else {
listIn.Add(this);
Apply();
}
}
protected abstract void Reapply();
protected abstract void Apply();
}
РЕДАКТИРОВАТЬ:
Я бы хотел иметь возможность затем вызвать что-то вроде
Код: Выделить всё
public class DerivedType : BaseType
{
protected override void Reapply() {}
protected override void Apply() {}
}
ListHolder b = new ListHolder();
b.a.Add((BaseType)Activator.CreateInstance(DerivedType)); // Should call Apply
b.a.Add((BaseType)Activator.CreateInstance(DerivedType)); // Should call Reapply
Подробнее здесь: https://stackoverflow.com/questions/793 ... the-caller
Мобильная версия