Re[2]: VS2008 валится при data binding+ObjectBinder+Editable
От: albenik Россия  
Дата: 15.06.09 07:33
Оценка:
Здравствуйте, 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".
Так хоть сразу понятно будет где ошибка.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.