Здравствуйте, ili, Вы писали:
ili>Здравствуйте, albenik, Вы писали:
A>>Дано:
A>>A>>public abstract class A : EditableObject<A>
A>>{
A>> public abstract B LinkedB { get; set; }
A>> public abstract string Name { get; set; }
A>>}
A>>public abstract class B : EditableObject<B>
A>>{
A>> public abstract B LinkedB { get; set; }
A>> public abstract string Name { get; set; }
A>>}
A>>
ili>у вас бесконечная рекурсия в B - внутри каждого B есть еще один B - в результате стек ется при проходке по этому делу.
ili>CreateInstance тоже сдохнет теми же симптомами, но от этого еще можно спастись повесив аттрибут LazyInstance или NoInstance на LinkedB
ili>а вот с обджект маппером...
Про рекурсию это я понял, и по большому счету, именно такая структура классов мне и не нужна, т.е. я вполне могу обойтись, да и обошелся уже без поля B.LinkedB
За подсказку про атрибуты спасибо, [NoInstance] спасает и в дизайнере тоже.
Другой вопрос, что выпадение студии по мне слишком жесткая реакция даже на криворукость, как, впрочем и переполнение стека из-за неявной рекурсии в реалтайме.
По идее в кодогенераторе вполне можно проверять что тип поля такой же как содержащего это поле класса и в getter поля вместо вызова CreateInstanse вставлять Exception типа "Warning possible recurisve call".
Так хоть сразу понятно будет где ошибка.