Skip to content

5.0.0

Compare
Choose a tag to compare
@jonorossi jonorossi released this 11 May 13:44
· 107 commits to master since this release
652a250

Enhancements

  • .NET 6.0 support (@Jevonius, #616)
  • .NET Standard 2.0 and 2.1 support (@lg2de, #485)
  • Non-intercepted methods on a class proxy with target are now forwarded to the target (@stakx, #571)
  • Significant performance improvements with proxy type generation for interface proxies without target. Up until now, DynamicProxy generated a separate IInvocation implementation type for every single proxied method – it is now able to reuse a single predefined type in many cases, thereby reducing the total amount of dynamic type generation. (@stakx, #573)

Bugfixes

  • Generic method with differently named generic arguments to parent throws KeyNotFoundException (@stakx, #106)
  • Proxying certain [Serializable] classes produces proxy types that fail PEVerify test (@stakx, #367)
  • private protected methods are not intercepted (@CrispyDrone, #535)
  • System.UIntPtr unsupported (@stakx, #546)
  • DynamicProxy generates two modules when proceeding from a class proxy's protected method to the target, causing an InvalidOperationException when saving the generated assembly to disk (@stakx, #569)
  • Upgrade log4net to v2.0.13 (@jonorossi, @stakx, @dschwartzni, #574, #605)

Deprecations

  • Removed support for the .NET Framework < 4.6.2 and .NET Standard 1.x. (@stakx, #495, #496; @Jevonius, #614)
  • Removed support for Code Access Security (CAS). (@stakx, #502)
  • Removed support for Remoting. This library no longer defines any types deriving from MarshalByRefObject, and ProxyUtil.IsProxy (which used to recognize remoting/"transparent" proxies) now tests only for DynamicProxy proxies. (@stakx, #507)
  • The following public members have been removed:
    • Castle.Core.Internal.CollectionExtensions (class)
    • Castle.Core.Internal.Lock (class) along with all related types and methods
    • Castle.Core.Internal.PermissionUtil.IsGranted (method)
    • Castle.Core.Pair<,> (type). Use System.ValueTuple<,> or System.Tuple<,> instead.
    • all type members in Castle.DynamicProxy.ModuleScope that gave direct access to DynamicProxy's type cache and ModuleBuilders. Only SaveAssembly, LoadAssemblyIntoCache, and members supporting these two facilities are left public.
    • almost all types and type members in the Castle.DynamicProxy.* sub-namespaces, as most of them are intended for internal use only.
    • DynamicProxy's custom exception types have been replaced by standard BCL exceptions (where appropriate), and by a single DynamicProxyException type for internal DynamicProxy errors.