dica rápida: problema com proxy no nhibernate

13 02 2008

Tive um problema com o NHibernate e suas classes proxy que me levou um bom pedaço da tarde.

Ocorre que eu tenho uma classe “Pessoa” e suas filhas “Fisica” e Juridica”. O que eu queria era listar todas as pessoas, e quando uma fosse escolhida eu tinha que fazer uma ação baseada no seu tipo. Normal.

O problema é que minha consulta retornava objetos “CProxyTypePessoa_NHibernate_ProxyINHibernateProxy_System_Runtime_SerializationISerializable2.

Essa classe herda de “Pessoa”, mas se eu tento fazer o cast pra “Fisica” ou “Juridica” – ban! Exceção.

Depois de fuçar um bucado, achei a solução pra Java:


if (obj instanceof HibernateProxy) {
obj = ((HibernateProxy)obj).getHibernateLazyInitializer().getImplementation();
}

Em .net, ficou quase igual:

if (obj is INHibernateProxy)
{
obj = (Pessoa)NHibernateProxyHelper.GetLazyInitializer(obj as INHibernateProxy).GetImplementation();
}

Bem trivial, mas eu perdi um bom tempo pra achar isso.

ps. Usei a extensão Reflector, pro Visual Studio. Um class browser bem bacana.

Anúncios

Ações

Information

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s




%d blogueiros gostam disto: