<PackageReference Include="Castle.Windsor" Version="2.5.4" />

ProxyUtil

public abstract class ProxyUtil
Helper support for proxy configuration.
using Castle.Core; using Castle.DynamicProxy; using System; using System.Runtime.Remoting; namespace Castle.MicroKernel.Proxy { public abstract class ProxyUtil { public static ProxyOptions ObtainProxyOptions(ComponentModel model, bool createOnDemand) { ProxyOptions proxyOptions = model.ExtendedProperties[ProxyConstants.ProxyOptionsKey] as ProxyOptions; if (proxyOptions == null && createOnDemand) { proxyOptions = new ProxyOptions(model.Dependencies); model.ExtendedProperties[ProxyConstants.ProxyOptionsKey] = proxyOptions; } return proxyOptions; } public static object GetUnproxiedInstance(object instance) { if (!RemotingServices.IsTransparentProxy(instance)) { IProxyTargetAccessor val = instance as IProxyTargetAccessor; if (val != null) instance = val.DynProxyGetTarget(); } return instance; } public static Type GetUnproxiedType(object instance) { if (!RemotingServices.IsTransparentProxy(instance)) { IProxyTargetAccessor val = instance as IProxyTargetAccessor; if (val != null) { object obj = val.DynProxyGetTarget(); if (obj != null) { if (object.ReferenceEquals(obj, instance)) return instance.GetType().BaseType; instance = obj; } } } return instance.GetType(); } } }