<PackageReference Include="Castle.Core" Version="4.0.0" />

ProxyUtil

public class ProxyUtil
using System; using System.Reflection; 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 (obj == instance) return instance.GetType().GetTypeInfo().get_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); } } }