Skip to content
  • v4.4.1
  • e1c1e6f
  • Compare
    Choose a tag to compare
    Search for a tag
  • v4.4.1
  • e1c1e6f
  • Compare
    Choose a tag to compare
    Search for a tag

@jonorossi jonorossi released this May 6, 2020 · 78 commits to master since this release

Bugfixes:

  • Prevent method name collisions when a proxy type implements more than two identically named interfaces having one or more identically named methods each. Name collisions are avoided by including the declaring types' namespaces in the proxy type's method names. (@stakx, #469)
  • Reduce lock contention while generating new proxy types which previously blocked new proxy instances (@tangdf, #484)
  • Fix mixins where proxy constructor fields were ordered differently to interfaces because of different case comparisons (@zapov, #475)
  • Fix proxy generation for types having only a private protected constructor (@mriehm, #491)
Assets 2
  • v4.4.0
  • f0626e2
  • Compare
    Choose a tag to compare
    Search for a tag
  • v4.4.0
  • f0626e2
  • Compare
    Choose a tag to compare
    Search for a tag

@jonorossi jonorossi released this Apr 5, 2019 · 123 commits to master since this release

Enhancements

  • Added trace logging level below Debug; maps to Trace in log4net/NLog, and Verbose in Serilog (@pi3k14, #404)
  • Recognize read-only parameters by the In modreq (@zvirja, #406)
  • DictionaryAdapter: Exposed GetAdapter overloads with NameValueCollection parameter in .NET Standard (@rzontar, #423)
  • Ability to add delegate mixins to proxies using ProxyGenerationOptions.AddDelegate[Type]Mixin. You can bind to the mixed-in Invoke methods on the proxy using ProxyUtil.CreateDelegateToMixin. (@stakx, #436)
  • New IInvocation.CaptureProceedInfo() method to enable better implementations of asynchronous interceptors (@stakx, #439)

Deprecations

  • The API surrounding Lock has been deprecated. This consists of the members listed below. Consider using the Base Class Library's System.Threading.ReaderWriterLockSlim instead. (@stakx, #391)
    • Castle.Core.Internal.Lock (class)
    • Castle.Core.Internal.ILockHolder (interface)
    • Castle.Core.Internal.IUpgradeableLockHolder (interface)
  • You should no longer manually emit types into DynamicProxy's dynamic assembly. For this reason, the following member has been deprecated. (@stakx, #445)
    • Castle.DynamicProxy.ModuleScope.DefineType (method)
  • The proxy type cache in ModuleScope should no longer be accessed directly. For this reason, the members listed below have been deprecated. (@stakx, #391)
    • Castle.DynamicProxy.ModuleScope.Lock (property)
    • Castle.DynamicProxy.ModuleScope.GetFromCache (method)
    • Castle.DynamicProxy.ModuleScope.RegisterInCache (method)
    • Castle.DynamicProxy.Generators.BaseProxyGenerator.AddToCache (method)
    • Castle.DynamicProxy.Generators.BaseProxyGenerator.GetFromCache (method)
    • Castle.DynamicProxy.Generators.CacheKey (class)
    • Castle.DynamicProxy.Serialization.CacheMappingsAttribute.ApplyTo (method)
    • Castle.DynamicProxy.Serialization.CacheMappingsAttribute.GetDeserializedMappings (method)
Assets 2
  • v4.3.1
  • 1ba6c89
  • Compare
    Choose a tag to compare
    Search for a tag
  • v4.3.1
  • 1ba6c89
  • Compare
    Choose a tag to compare
    Search for a tag

@jonorossi jonorossi released this Jun 20, 2018 · 184 commits to master since this release

Enhancements

  • Use shared read locking to reduce lock contention in InvocationHelper and ProxyUtil (@TimLovellSmith, #377)

Bugfixes

  • Prevent interceptors from being able to modify in parameters (@stakx, #370)
  • Make default value replication of optional parameters more tolerant of default values that are represented in metadata with a mismatched type (@stakx, #371)
  • Fix a concurrency issue (writing without taking a write lock first) in BaseProxyGenerator.ObtainProxyType (@stakx, #383)

Deprecations

  • Castle.DynamicProxy.Generators.Emitters.ArgumentsUtil.IsAnyByRef (@stakx, #370)
Assets 2
  • v4.3.0
  • 38acf78
  • Compare
    Choose a tag to compare
    Search for a tag
  • v4.3.0
  • 38acf78
  • Compare
    Choose a tag to compare
    Search for a tag

@jonorossi jonorossi released this Jun 6, 2018 · 203 commits to master since this release

Enhancements

  • Added .NET Standard/.NET Core support for NLog (@snakefoot, #200)
  • Added .NET Standard/.NET Core support for log4net (@snakefoot, #201)
  • DynamicProxy supported C# in parameter modifiers only on the .NET Framework up until now. Adding .NET Standard 1.5 as an additional target to the NuGet package makes them work on .NET Core, too (@stakx, #339)
  • Replicate custom attributes on constructor parameters in the generated proxy type constructors to fulfill introspection of constructors. This does not change the proxying behavior. (@stakx, #341)
  • Improve performance of InvocationHelper cache lookups (@tangdf, #358)
  • Improve fidelity of default value replication of optional parameters to fulfill inspection of the generated proxies. This does not change the proxying behavior. (@stakx, #356)
  • Improve cache performance of MethodFinder.GetAllInstanceMethods (@tangdf, #357)

Bugfixes

  • Fix Castle.Services.Logging.Log4netIntegration assembly file name casing which breaks on Linux (@beginor, #324)
  • Fix Castle.DynamicProxy.Generators.AttributesToAvoidReplicating not being thread safe (InvalidOperationException "Collection was modified; enumeration operation may not execute.") (@BrunoJuchli, #334)
  • Fix TraceLoggerFactory to allow specifying the default logger level (@acjh, #342)
  • Ensure that DynamicProxy doesn't create invalid dynamic assemblies when proxying types from non-strong-named assemblies (@stakx, #327)
  • Fix interceptor selectors being passed System.RuntimeType for class proxies instead of the target type (@stakx, #359)
  • Replace NullReferenceException with descriptive one thrown when interceptors swallow exceptions and cause a null value type to be returned (@jonorossi, #85)
Assets 2

@jonorossi jonorossi released this Oct 10, 2017 · 268 commits to master since this release

Bugfixes

  • Add missing equality checks in MethodSignatureComparer.EqualSignatureTypes to fix TypeLoadExceptions ("Method does not have an implementation") (@stakx, #310)
  • Add missing XML documentation files to NuGet packages (@fir3pho3nixx, #312)
Assets 2

@jonorossi jonorossi released this Sep 28, 2017 · 272 commits to master since this release

Enhancements

  • Add IProxyTargetAccessor.DynProxySetTarget to set the target of a proxy (@yallie, #293)
  • Internal dynamic proxy fields are now private instead of public (@spencercw, #260)

Bugfixes

  • Make ProxyUtil.IsAccessible(MethodBase) take into account declaring type's accessibility so it doesn't report false negatives for e.g. public methods in inaccessible classes. (@stakx, #289)
  • Fix InvalidCastException calling IChangeProxyTarget.ChangeProxyTarget proxying generic interfaces (@yallie, #293)
  • Ignore minor/patch level version for AssemblyVersionAttribute as this creates binding errors for downstream libraries (@fir3pho3nixx, #288)
  • Fix DictionaryAdapter firing NotifyPropertyChang(ed/ing) events after CancelEdit (@Lakritzator, #299)
  • Fix ArgumentException when overriding method with nested generics (@BitWizJason, #297)
  • Explicit package versioning applied within solution to avoid maligned NuGet upgrades for lock step versioned packages. (@fir3pho3nixx, #292)

Deprecations

  • IChangeProxyTarget.ChangeProxyTarget is deprecated in favor of IProxyTargetAccessor.DynProxySetTarget (@yallie, #293)
Assets 2

@jonorossi jonorossi released this Jul 12, 2017 · 295 commits to master since this release

Bugfixes

  • Prevent member name collision when proxy implements same generic interface more than twice (@stakx, #88)
  • Fix incorrect replication (reversed order) of custom modifiers (modopts and modreqs) on the CLR, does not work yet on Mono (@stakx, #277)
  • Fix COM interface proxy error case throwing exceptions trying to release null pointer from QueryInterface (@stakx, #281)
Assets 2

@jonorossi jonorossi released this Jun 11, 2017 · 322 commits to master since this release

Breaking Changes

  • Remove AllowPartiallyTrustedCallersAttribute, which wasn't defined by default (@fir3pho3nixx, #241)
  • Upgrade log4net to v2.0.8 (@fir3pho3nixx, #241)

Enhancements

  • Add ProxyUtil.IsAccessible to check if a method is accessible to DynamicProxyGenAssembly2 (Blair Conrad, #235)
  • Refactor build engineering to support AppVeyor and TravisCI (@fir3pho3nixx, #241)

Bugfixes

  • Fix order of class proxy constructor arguments when using multiple mixins (@sebastienros, #230)
  • Fix dependency on "System.ComponentModel.TypeConverter" NuGet package version that does not exist (#239)
  • Fix ParamArrayAttribute not being replicated in proxy (@stakx, #121)
  • Fix System.Net.Mail.SmtpClient is obsolete on Mono warning (#254)
Assets 2

@jonorossi jonorossi released this Jan 24, 2017 · 397 commits to master since this release

Breaking Changes:

  • Update to NLog 4.4.1 and remove beta .NET Core support for NLog (#228)
  • Update to log4net 2.0.7 (#229)

Bugfixes:

Assets 3
Pre-release
Pre-release

@jonorossi jonorossi released this Oct 27, 2016

Breaking Changes

  • Rework Serilog integration to accept an ILogger rather than a LoggerConfiguration to work correctly with Serilog (#142, #211)
  • Remove obsolete property AttributesToAddToGeneratedTypes from ProxyGenerationOptions (#219)
  • Change type of ProxyGenerationOptions.AdditionalAttributes to IList<CustomAttributeInfo> (#219)
  • Remove IAttributeDisassembler which is no longer necessary (#219)

Enhancements

  • Add IProxyGenerator interface for the ProxyGenerator class (#215)
  • Improve default list of attributes to avoid replicating. Code Access Security attributes and MarshalAsAttribute will no longer be replicated (#221)

Bugfixes

  • Fix building on Mono 4.6.1
  • Different attributes in ProxyGenerationOptions.AdditionalAttributes now generates different proxy types (#219)
Assets 3
You can’t perform that action at this time.