DryIoc v4.0.0 Release Notes
Release Date: 2019-03-04 // about 5 years ago-
🚀 v4.0.0 Release notes
Highlights
- DryIoc.dll and all extensions are strongly-signed.
- 🐎 Greatly improved performance and decreased memory allocations for bootstrapping and first-time resolution, as well as for the rest of operations. The results were measured on realistic mid-sized object graph with ~40 dependencies and mixed registration types.
- 📄
IResolver
is directly implementingIServiceProvider
for supported platforms UseInstance
is split intoRegisterInstance
andUse
methods #78- 📄 The docs now are generated from
.cs
files in DryIoc.Docs project with up-to-date runnable examples using CsToMd project.
🔋 Features
- ➕ added: #4 Rule for Func and Lazy to be resolved even without requested service registered
- ➕ added: #8 Parity of registration methods between IContainer and IRegistrator (RegisterMapping and RegisterPlaceholder are available in IRegistrator)
- ➕ added: #9 RegisterMany should indicate if no registration was made
- ➕ added: #11 Resolution root bound dependency expression de-duplication
- ➕ added: #17 Rules.DefaultRegistrationServiceKey enhancement
- ➕ added: #20 Enhance error message with current container Rules info
- ➕ added: #32 Integrate MediatR like middleware directly to DryIoc #32
- ➕ added: #39 For troubleshooting purposes add ability to opt-out FastExpressionCompiler
- ➕ Added: #45 Consider expression interpretation to speed-up first time resolution
- ➕ added: #78 Split UseInstance two roles into separate RegisterInstance and Use
- ➕ added: DryIoc IResolver now directly implements IServiceProvider - no need for BuildServiceProvider anymore
- ➕ added: DryIoc.Rules.Rules.MicrosoftDependencyInjectionRules - the set of rules for MS.DI available directly in DryIoc
- ➕ added: FactoryInfo.Of(MemberInfo factoryMember, object factoryInstance)
- ➕ added: Explicit Factory.RegistrationOrder and adapted its usage for open-generics
- ➕ added: IRegistrator.GetRegisteredFactories
- ➕ added: FactoryType to Registrator.RegisterMapping
- ➕ added: AsyncExecutionFlowScopeContext.Default member
- ➕ added: Support for FEC v2.0
🛠 Fixes
- 🛠 fixed: #6 Open generic singleton service registration that satisfies multiple interfaces
- 🛠 fixed: #7 Context-based injection
- 🛠 fixed: #16 AutoConcreteTypeResolution should not consider a primitive type
- 🛠 fixed: #25 Decorator with serviceKey throws exception which gives invalid advice on how to fix the issue for the most common reason to use the servicekey
- 🛠 fixed: #26 Speed Optimization for short living applications
- 🛠 fixed: #27 DryIoc cold start performance
- 🛠 fixed: #28 FastExpressionCompiler is not used in Net Standard 1.3, 2.0 packages and not used in .Net Core
- 🛠 fixed: #29 Resolve caches object[] args values
- 🛠 fixed: #33 Memory leak with ResolveManyBehavior.AzLazyEnumerable?
- 🛠 fixed: #41 ErrorCode: RegisteredFactoryMethodResultTypesIsNotAssignableToImplementationType
- 🛠 fixed: #46 Operation is not supported on this platform exception on Xamarin iOS
- 🛠 fixed: #61 Rules.SelectLastRegisteredFactory() does not account for OpenGenerics
- 🛠 fixed: #63 Func wrapper resolving #63
- 🛠 fixed: #75 Scoped call to Resolve() with args seems to leak memory
- 🛠 fixed: BB-593 Add auto-generated tag to PCL FEC
- 🛠 fixed: BB-594 Conflicting type is not working in .NET Core 2.1
- 🛠 fixed: BB-596 The problem was in non-public service type- fixed: RegisterMapping for open-generic service type
- 🛠 fixed: Using facadeKey in CreateFacade