Чтобы получить «незафиксированный» тип, вы можете добавить такой метод в FooBase:
public virtual Type GetTypeUnproxied() {
return GetType();
}
Когда этот метод вызывается на прокси, будет возвращен тип базового объекта.
Однако из вашего описания кажется, что вы пытаетесь сделать это вне сеанса NHibernate, и это также не будет работать с этой стратегией.Чтобы вызвать любой метод на прокси-сервере, где вызов передается через прокси-сервер к базовому объекту, его необходимо создать, и это может произойти только в рамках сеанса NHibernate, поскольку фактический тип объекта хранится в базе данных (в столбце дискриминатора для таблицыстратегия наследования по иерархии классов).Поэтому я предполагаю, что вам нужно убедиться, что прокси инициализирован перед закрытием сессии, если вам нужно проверить тип позже.
Если причина для ленивой загрузки отношения Bar-> FooBase заключается в том, что FooBase (или производного типа) может содержать большие объемы данных, и вы используете NHibernate 3, вместо этого вы можете использовать lazy properties .