Castle DynamicProxy: obter objeto não-protegido

Estou usando o Castle DynamicProxy para adicionar um interceptador aos meus tipos. Agora eu preciso para obter o tipo de base subjacente (não o próprio proxy).

Eu encontrei algumas dicas sobre o SO que sugeriu usar a classe ProxyUtil assim:

object realInstance = ProxyUtil.GetUnproxiedInstance(proxyInstance);

Isso não parece funcionar como

bool isProxy = ProxyUtil.IsProxy(realInstance);

é sempre verdade.

Eu também tentei usar o seguinte trecho de código, que é essencialmente o que o ProxyUtil está fazendo:

var accessor = proxyInstance as IProxyTargetAccessor;
var realInstance = accessor.DynProxyGetTarget();

com os mesmos resultados, o realInstance ainda é um proxy.

O que estou perdendo aqui?

questionAnswers(3)

yourAnswerToTheQuestion