После борьбы с понижением (см. [мой оригинальный пост] ) и с созданием [глубоких копий] я нашел [эту одноименную статью] гдеВ C ++ сделано предложение о том, как бороться с этой проблемой.С большим волнением я реализовал это в C # следующим образом:
public partial class User
{
virtual public Employer GetEmployer() { return null; }
...
}
public partial class Employer
{
public override Employer GetEmployer() { return this; }
...
}
, который я затем использовал следующим образом:
User u = GetUser();
Employer e = u.GetEmployer();
Однако (я думаю, что неудивительно), переопределение никогда не вызываетсяи возвращается ноль.
Проблема, которую я пытаюсь решить, состоит в том, что то, что я собираю, было бы очень распространенным вариантом использования: я получаю немного данных, которые мне нужно сохранить, но они неполные.Позже я получаю больше данных и использую их для уточнения моего понимания мира.
В этом конкретном случае я получаю адрес электронной почты от кого-то, использующего мой веб-сайт, так что я знаю, что они User
, но в целом я ничего о них не знаю.Позже (когда они заполняют форму), я знаю, что они на самом деле Employer
, поэтому мне нужно преуменьшить мою User
.
Какой здесь правильный подход?