All Versions
44
Latest Version
Avg Release Cycle
25 days
Latest Release
1205 days ago

Changelog History
Page 1

  • v5.4.1 Changes

    May 16, 2022

    🛠 Fixed

    • 👻 Type load exception when the library was trimmed.
  • v5.4.0 Changes

    May 03, 2022

    🔄 Changed

    • Resolve<IEnumerable<>>(name) now returns each service that has the same name. ### ➕ Added
    • ResolveAll(name) that returns each service that has the same name. ### ✂ Removed
    • 0️⃣ Obsolete Resolve() method with the nullResultAllowed parameter, it was replaced by ResolveOrDefault().
    • Each obsolete ResolveFactory<>() method as their functionality is equivalent to Resolve<Func<>>().
    • 🔧 Obsolete .WithRuntimeCircularDependencyTracking() container configuration option in favor of parameterized factory delegates.
  • v5.3.0 Changes

    April 10, 2022

    ➕ Added

    • WithDynamicResolution() registration option to indicate that the service's resolution should be handled by a dynamic Resolve() call on the current IDependencyResolver instead of a pre-built instantiation expression.
    • 👌 Support for resolving custom Delegate types alongside Func<>.
  • v5.2.1 Changes

    March 12, 2022

    🛠 Fixed

    • Consolidate Resolve() API, using method overloads instead of optional parameters.
  • v5.2.0 Changes

    March 07, 2022

    🛠 Fixed

    • Unable to resolve IHubContext. #114

    ➕ Added

    • Null-safety by enabling null-state analysis.
    • 0️⃣ Option to exclude a factory's result from dispose tracking, even if it would be tracked by default. This gives the ability to decide within the factory delegate that the result should be tracked or not. cs .Register<Service>(options => options .WithFactory<IRequestContext>(requestContext => requestContext.ExcludeFromTracking(/* get an existing or instantiate a new service */) ) );
    • 0️⃣ A new ResolveFactoryOrDefault() method that allows null results.
    • 0️⃣ A new ResolveOrDefault() method that allows null results.
    • 📇 ValueTuple<,> metadata support.

    🔄 Changed

    • 0️⃣ Resolve() with the nullResultAllowed parameter became obsolete, it was replaced by ResolveOrDefault().
    • Each ResolveFactory<>() method became obsolete as their functionality is equivalent to Resolve<Func<>>().

    ✂ Removed

    • nullResultAllowed parameter of ResolveFactory().
  • v5.1.0 Changes

    February 27, 2022

    🔄 Changed

  • v5.0.1 Changes

    February 10, 2022

    🔄 Changed

    • Converted the ServiceContext to a read-only struct.
    • Made the .AsServiceContext() extension method of Expression public.
  • v5.0.0 Changes

    February 09, 2022

    ➕ Added

    🛠 Fixed

    • There was a bug in the expression compiler that resulted in wrong IL generation in case of value types inside IEnumerable<>.

    🔄 Changed

    • 📇 Tuple<> requests are not resolved with services in all its items anymore. It's became part of the newly introduced resolution with metadata feature.
    • The IResolver interface became the base for the newly introduced IServiceWrapper and IServiceResolver interfaces. These became the main entrypoints for [container extensions](advanced/wrappers-resolvers).
    • To make the dependency overrides available in factories the IResolutionContext was bound to the generated expression tree and the compiled delegate. (#105) This temporary solution could lead issues as the resolution context is static between the compiled delegates, however the dependency overrides are not.

    To resolve this, a new IRequestContext parameter is introduced for each compiled factory delegate that can be used to access overrides. (The same context object is used to produce and track per-request services)

      container.Register<Service>(options => options.
          WithFactory<IRequestContext>(requestContext => 
      {
         // access the overrides through: requestContext.GetOverrides()
         // or: requestContext.GetDependencyOverrideOrDefault<OverrideType>()
      }))
    

    ✂ Removed

    • 👌 Support of circular dependencies with Lazy<> along with the .WithCircularDependencyWithLazy() container configuration option.
  • v4.1.0 Changes

    November 21, 2021

    🛠 Fixed

    • IsRegistered() returns true only when the container has a registration with the given type (and name).
    • CanResolve() returns true only when at least one of the following is true:
      • The given type is registered in the current or one of the parent containers.
      • The given type is a closed generic type and its open generic definition is registered.
      • The given type is a wrapper (IEnumerable<>, Lazy<>, Func<>, or Tuple<>) and the underlying type is registered.
      • The given type is not registered but it's resolvable and the unknown type resolution is enabled.
  • v4.0.0 Changes

    November 18, 2021

    ✂ Removed

    • 👍 .NET 4.0 support.