ProxyUtil
using System;
namespace Castle.DynamicProxy
{
public class ProxyUtil
{
public static object GetUnproxiedInstance(object instance)
{
IProxyTargetAccessor proxyTargetAccessor = instance as IProxyTargetAccessor;
if (proxyTargetAccessor != null)
instance = proxyTargetAccessor.DynProxyGetTarget();
return instance;
}
public static Type GetUnproxiedType(object instance)
{
IProxyTargetAccessor proxyTargetAccessor = instance as IProxyTargetAccessor;
if (proxyTargetAccessor != null) {
object obj = proxyTargetAccessor.DynProxyGetTarget();
if (obj != null) {
if (object.ReferenceEquals(obj, instance))
return instance.GetType().BaseType;
instance = obj;
}
}
return instance.GetType();
}
public static bool IsProxy(object instance)
{
return instance is IProxyTargetAccessor;
}
public static bool IsProxyType(Type type)
{
return typeof(IProxyTargetAccessor).IsAssignableFrom(type);
}
}
}