Здесь есть несколько проблем.Поскольку вы используете List<Bar>
, это не сработает, если вы вернете List<Baz>
, поскольку List<>
не выполняет ковариацию .
.сделайте это virtual
, чтобы в новом проекте создать SubFoo
, и вы можете вернуть IEnumerable<Baz>
.
ОБНОВЛЕНИЕ
ОК, согласно предоставленной вами новой информации ( вы используете его для заполнения списка из XML ), я бы создал virtual protected CreateBar()
, который создает новый объект bar и вызывается LoadData () для создания нового Bar
в цикле.В SubFoo
я переопределяю и возвращаю Baz
вместо этого.В SubFoo
я позвоню base.LoadData()
и заполню список Baz
, а затем добавлю логику для заполнения новых свойств Baz
, которых нет в Bar
.
Или, возможно,
просто используйте XML Serilization, и я получаю все это бесплатно!