NHibernate SaveOrUpdate, ошибка: Никакой стойкий организм для

Стек вызовов реализован x86 системой команд и операционной системой.

Инструкции как нажатие и поп корректируют указатель вершины стека, в то время как операционная система заботится о выделении памяти, когда стек растет для каждого потока.

то, что стопка x86 "углубляется" от выше для понижения адресов, делает эту архитектуру больше восприимчивый к атаке переполнения буфера.

5
задан Abel 23 May 2011 в 16:47
поделиться

1 ответ

Обновление: переписанный ответ

По-видимому, хотя я не могу найти исчерпывающий источник по этому вопросу, важен фактический класс. Это имеет смысл, если учесть, что NHibernate использует отражение для поиска базового типа. Кроме того, когда отображение загружено, оно украшает ваши типы, поэтому в основном они становятся совершенно разными типами (вы можете увидеть это, когда наведете на них курсор во время отладки).

Этот принцип в основном предотвращает наследование с понижающим преобразованием, поскольку ваш производный тип не нанесен на карту, не украшен и, следовательно, неизвестен. Если вам нужно использовать наследование, у вас есть несколько вариантов:

  1. Сделать отображение для производного класса
  2. Добавить преобразователь для вашего класса, чтобы копировать из одного типа в другой (приведение недостаточно, оно выиграет » t изменить базовый объект)
  3. Используйте ICloneable

Все эти методы довольно громоздки. Если ваш дизайн позволяет это, вместо наследования используйте частичные классы или методы расширения. Последнее - то, что я нахожу в своих собственных проектах, по-видимому, я уже сталкивался с этим раньше и сделал обычай использовать методы расширения.

9
ответ дан 14 December 2019 в 01:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: