diff --git a/Emby.Dlna/Emby.Dlna.csproj b/Emby.Dlna/Emby.Dlna.csproj
index f0df7103a6..ea7e47bcf6 100644
--- a/Emby.Dlna/Emby.Dlna.csproj
+++ b/Emby.Dlna/Emby.Dlna.csproj
@@ -178,11 +178,11 @@
- ..\packages\System.Runtime.CompilerServices.Unsafe.4.5.0-rc1\lib\netstandard2.0\System.Runtime.CompilerServices.Unsafe.dll
+ ..\packages\System.Runtime.CompilerServices.Unsafe.4.5.0\lib\netstandard2.0\System.Runtime.CompilerServices.Unsafe.dll
- ..\packages\System.Threading.Tasks.Extensions.4.5.0-rc1\lib\netstandard2.0\System.Threading.Tasks.Extensions.dll
+ ..\packages\System.Threading.Tasks.Extensions.4.5.0\lib\netstandard2.0\System.Threading.Tasks.Extensions.dll
diff --git a/Emby.Dlna/packages.config b/Emby.Dlna/packages.config
index ce02bd7d30..0204cc4ee4 100644
--- a/Emby.Dlna/packages.config
+++ b/Emby.Dlna/packages.config
@@ -2,6 +2,6 @@
-
-
+
+
\ No newline at end of file
diff --git a/Emby.Server.Implementations/Emby.Server.Implementations.csproj b/Emby.Server.Implementations/Emby.Server.Implementations.csproj
index 479fd627ed..530bf3bc5f 100644
--- a/Emby.Server.Implementations/Emby.Server.Implementations.csproj
+++ b/Emby.Server.Implementations/Emby.Server.Implementations.csproj
@@ -638,8 +638,8 @@
..\packages\SharpCompress.0.18.2\lib\net45\SharpCompress.dll
-
- ..\packages\SimpleInjector.4.0.12\lib\net45\SimpleInjector.dll
+
+ ..\packages\SimpleInjector.4.3.0\lib\net45\SimpleInjector.dll..\packages\SQLitePCL.pretty.1.1.0\lib\portable-net45+netcore45+wpa81+wp8\SQLitePCL.pretty.dll
@@ -654,15 +654,15 @@
-
- ..\packages\System.Numerics.Vectors.4.4.0\lib\net46\System.Numerics.Vectors.dll
+
+ ..\packages\System.Numerics.Vectors.4.5.0\lib\net46\System.Numerics.Vectors.dll
- ..\packages\System.Runtime.CompilerServices.Unsafe.4.5.0-rc1\lib\netstandard2.0\System.Runtime.CompilerServices.Unsafe.dll
+ ..\packages\System.Runtime.CompilerServices.Unsafe.4.5.0\lib\netstandard2.0\System.Runtime.CompilerServices.Unsafe.dll
- ..\packages\System.Threading.Tasks.Extensions.4.5.0-rc1\lib\netstandard2.0\System.Threading.Tasks.Extensions.dll
+ ..\packages\System.Threading.Tasks.Extensions.4.5.0\lib\netstandard2.0\System.Threading.Tasks.Extensions.dll
diff --git a/Emby.Server.Implementations/packages.config b/Emby.Server.Implementations/packages.config
index 119194dcd2..b1d5bd462d 100644
--- a/Emby.Server.Implementations/packages.config
+++ b/Emby.Server.Implementations/packages.config
@@ -6,10 +6,10 @@
-
+
-
-
-
+
+
+
\ No newline at end of file
diff --git a/MediaBrowser.Providers/MediaBrowser.Providers.csproj b/MediaBrowser.Providers/MediaBrowser.Providers.csproj
index 5b607ffda6..317d38c2a0 100644
--- a/MediaBrowser.Providers/MediaBrowser.Providers.csproj
+++ b/MediaBrowser.Providers/MediaBrowser.Providers.csproj
@@ -149,11 +149,11 @@
- ..\packages\System.Runtime.CompilerServices.Unsafe.4.5.0-rc1\lib\netstandard2.0\System.Runtime.CompilerServices.Unsafe.dll
+ ..\packages\System.Runtime.CompilerServices.Unsafe.4.5.0\lib\netstandard2.0\System.Runtime.CompilerServices.Unsafe.dll
- ..\packages\System.Threading.Tasks.Extensions.4.5.0-rc1\lib\netstandard2.0\System.Threading.Tasks.Extensions.dll
+ ..\packages\System.Threading.Tasks.Extensions.4.5.0\lib\netstandard2.0\System.Threading.Tasks.Extensions.dll
diff --git a/MediaBrowser.Providers/packages.config b/MediaBrowser.Providers/packages.config
index ce02bd7d30..0204cc4ee4 100644
--- a/MediaBrowser.Providers/packages.config
+++ b/MediaBrowser.Providers/packages.config
@@ -2,6 +2,6 @@
-
-
+
+
\ No newline at end of file
diff --git a/MediaBrowser.Server.Mono/MediaBrowser.Server.Mono.csproj b/MediaBrowser.Server.Mono/MediaBrowser.Server.Mono.csproj
index 82c7bb1f33..e6bbf36fb5 100644
--- a/MediaBrowser.Server.Mono/MediaBrowser.Server.Mono.csproj
+++ b/MediaBrowser.Server.Mono/MediaBrowser.Server.Mono.csproj
@@ -66,8 +66,8 @@
..\packages\SharpCompress.0.18.2\lib\net45\SharpCompress.dll
-
- ..\packages\SimpleInjector.4.0.12\lib\net45\SimpleInjector.dll
+
+ ..\packages\SimpleInjector.4.3.0\lib\net45\SimpleInjector.dll..\packages\SkiaSharp.1.58.1\lib\net45\SkiaSharp.dll
@@ -83,15 +83,15 @@
-
- ..\packages\System.Numerics.Vectors.4.4.0\lib\net46\System.Numerics.Vectors.dll
+
+ ..\packages\System.Numerics.Vectors.4.5.0\lib\net46\System.Numerics.Vectors.dll
- ..\packages\System.Runtime.CompilerServices.Unsafe.4.5.0-rc1\lib\netstandard2.0\System.Runtime.CompilerServices.Unsafe.dll
+ ..\packages\System.Runtime.CompilerServices.Unsafe.4.5.0\lib\netstandard2.0\System.Runtime.CompilerServices.Unsafe.dll
- ..\packages\System.Threading.Tasks.Extensions.4.5.0-rc1\lib\netstandard2.0\System.Threading.Tasks.Extensions.dll
+ ..\packages\System.Threading.Tasks.Extensions.4.5.0\lib\netstandard2.0\System.Threading.Tasks.Extensions.dll
diff --git a/MediaBrowser.Server.Mono/packages.config b/MediaBrowser.Server.Mono/packages.config
index 3ca88a76ea..28b20accc0 100644
--- a/MediaBrowser.Server.Mono/packages.config
+++ b/MediaBrowser.Server.Mono/packages.config
@@ -5,11 +5,11 @@
-
+
-
-
-
+
+
+
\ No newline at end of file
diff --git a/MediaBrowser.ServerApplication/MediaBrowser.ServerApplication.csproj b/MediaBrowser.ServerApplication/MediaBrowser.ServerApplication.csproj
index 267e3f2253..40957027ac 100644
--- a/MediaBrowser.ServerApplication/MediaBrowser.ServerApplication.csproj
+++ b/MediaBrowser.ServerApplication/MediaBrowser.ServerApplication.csproj
@@ -92,8 +92,8 @@
..\packages\SharpCompress.0.18.2\lib\net45\SharpCompress.dll
-
- ..\packages\SimpleInjector.4.0.12\lib\net45\SimpleInjector.dll
+
+ ..\packages\SimpleInjector.4.3.0\lib\net45\SimpleInjector.dll..\packages\SkiaSharp.1.58.1\lib\net45\SkiaSharp.dll
@@ -112,16 +112,16 @@
-
- ..\packages\System.Numerics.Vectors.4.4.0\lib\net46\System.Numerics.Vectors.dll
+
+ ..\packages\System.Numerics.Vectors.4.5.0\lib\net46\System.Numerics.Vectors.dll
- ..\packages\System.Runtime.CompilerServices.Unsafe.4.5.0-rc1\lib\netstandard2.0\System.Runtime.CompilerServices.Unsafe.dll
+ ..\packages\System.Runtime.CompilerServices.Unsafe.4.5.0\lib\netstandard2.0\System.Runtime.CompilerServices.Unsafe.dll
- ..\packages\System.Threading.Tasks.Extensions.4.5.0-rc1\lib\netstandard2.0\System.Threading.Tasks.Extensions.dll
+ ..\packages\System.Threading.Tasks.Extensions.4.5.0\lib\netstandard2.0\System.Threading.Tasks.Extensions.dll
diff --git a/MediaBrowser.ServerApplication/packages.config b/MediaBrowser.ServerApplication/packages.config
index f3b709443b..9515e09fdb 100644
--- a/MediaBrowser.ServerApplication/packages.config
+++ b/MediaBrowser.ServerApplication/packages.config
@@ -5,11 +5,11 @@
-
+
-
-
-
+
+
+
\ No newline at end of file
diff --git a/SocketHttpListener/packages.config b/SocketHttpListener/packages.config
index 3f827eed95..e95ee71c7f 100644
--- a/SocketHttpListener/packages.config
+++ b/SocketHttpListener/packages.config
@@ -1,5 +1,5 @@
-
+
\ No newline at end of file
diff --git a/packages/Microsoft.NETCore.Platforms.1.1.0/Microsoft.NETCore.Platforms.1.1.0.nupkg b/packages/Microsoft.NETCore.Platforms.1.1.0/Microsoft.NETCore.Platforms.1.1.0.nupkg
deleted file mode 100644
index 955c6353fc..0000000000
Binary files a/packages/Microsoft.NETCore.Platforms.1.1.0/Microsoft.NETCore.Platforms.1.1.0.nupkg and /dev/null differ
diff --git a/packages/Microsoft.NETCore.Platforms.1.1.0/dotnet_library_license.txt b/packages/Microsoft.NETCore.Platforms.1.1.0/dotnet_library_license.txt
deleted file mode 100644
index 92b6c443d3..0000000000
--- a/packages/Microsoft.NETCore.Platforms.1.1.0/dotnet_library_license.txt
+++ /dev/null
@@ -1,128 +0,0 @@
-
-MICROSOFT SOFTWARE LICENSE TERMS
-
-
-MICROSOFT .NET LIBRARY
-
-These license terms are an agreement between Microsoft Corporation (or based on where you live, one of its affiliates) and you. Please read them. They apply to the software named above, which includes the media on which you received it, if any. The terms also apply to any Microsoft
-
-· updates,
-
-· supplements,
-
-· Internet-based services, and
-
-· support services
-
-for this software, unless other terms accompany those items. If so, those terms apply.
-
-BY USING THE SOFTWARE, YOU ACCEPT THESE TERMS. IF YOU DO NOT ACCEPT THEM, DO NOT USE THE SOFTWARE.
-
-
-IF YOU COMPLY WITH THESE LICENSE TERMS, YOU HAVE THE PERPETUAL RIGHTS BELOW.
-
-1. INSTALLATION AND USE RIGHTS.
-
-a. Installation and Use. You may install and use any number of copies of the software to design, develop and test your programs.
-
-b. Third Party Programs. The software may include third party programs that Microsoft, not the third party, licenses to you under this agreement. Notices, if any, for the third party program are included for your information only.
-
-2. ADDITIONAL LICENSING REQUIREMENTS AND/OR USE RIGHTS.
-
-a. DISTRIBUTABLE CODE. The software is comprised of Distributable Code. “Distributable Code” is code that you are permitted to distribute in programs you develop if you comply with the terms below.
-
-i. Right to Use and Distribute.
-
-· You may copy and distribute the object code form of the software.
-
-· Third Party Distribution. You may permit distributors of your programs to copy and distribute the Distributable Code as part of those programs.
-
-ii. Distribution Requirements. For any Distributable Code you distribute, you must
-
-· add significant primary functionality to it in your programs;
-
-· require distributors and external end users to agree to terms that protect it at least as much as this agreement;
-
-· display your valid copyright notice on your programs; and
-
-· indemnify, defend, and hold harmless Microsoft from any claims, including attorneys’ fees, related to the distribution or use of your programs.
-
-iii. Distribution Restrictions. You may not
-
-· alter any copyright, trademark or patent notice in the Distributable Code;
-
-· use Microsoft’s trademarks in your programs’ names or in a way that suggests your programs come from or are endorsed by Microsoft;
-
-· include Distributable Code in malicious, deceptive or unlawful programs; or
-
-· modify or distribute the source code of any Distributable Code so that any part of it becomes subject to an Excluded License. An Excluded License is one that requires, as a condition of use, modification or distribution, that
-
-· the code be disclosed or distributed in source code form; or
-
-· others have the right to modify it.
-
-3. SCOPE OF LICENSE. The software is licensed, not sold. This agreement only gives you some rights to use the software. Microsoft reserves all other rights. Unless applicable law gives you more rights despite this limitation, you may use the software only as expressly permitted in this agreement. In doing so, you must comply with any technical limitations in the software that only allow you to use it in certain ways. You may not
-
-· work around any technical limitations in the software;
-
-· reverse engineer, decompile or disassemble the software, except and only to the extent that applicable law expressly permits, despite this limitation;
-
-· publish the software for others to copy;
-
-· rent, lease or lend the software;
-
-· transfer the software or this agreement to any third party; or
-
-· use the software for commercial software hosting services.
-
-4. BACKUP COPY. You may make one backup copy of the software. You may use it only to reinstall the software.
-
-5. DOCUMENTATION. Any person that has valid access to your computer or internal network may copy and use the documentation for your internal, reference purposes.
-
-6. EXPORT RESTRICTIONS. The software is subject to United States export laws and regulations. You must comply with all domestic and international export laws and regulations that apply to the software. These laws include restrictions on destinations, end users and end use. For additional information, see www.microsoft.com/exporting.
-
-7. SUPPORT SERVICES. Because this software is “as is,” we may not provide support services for it.
-
-8. ENTIRE AGREEMENT. This agreement, and the terms for supplements, updates, Internet-based services and support services that you use, are the entire agreement for the software and support services.
-
-9. APPLICABLE LAW.
-
-a. United States. If you acquired the software in the United States, Washington state law governs the interpretation of this agreement and applies to claims for breach of it, regardless of conflict of laws principles. The laws of the state where you live govern all other claims, including claims under state consumer protection laws, unfair competition laws, and in tort.
-
-b. Outside the United States. If you acquired the software in any other country, the laws of that country apply.
-
-10. LEGAL EFFECT. This agreement describes certain legal rights. You may have other rights under the laws of your country. You may also have rights with respect to the party from whom you acquired the software. This agreement does not change your rights under the laws of your country if the laws of your country do not permit it to do so.
-
-11. DISCLAIMER OF WARRANTY. THE SOFTWARE IS LICENSED “AS-IS.” YOU BEAR THE RISK OF USING IT. MICROSOFT GIVES NO EXPRESS WARRANTIES, GUARANTEES OR CONDITIONS. YOU MAY HAVE ADDITIONAL CONSUMER RIGHTS OR STATUTORY GUARANTEES UNDER YOUR LOCAL LAWS WHICH THIS AGREEMENT CANNOT CHANGE. TO THE EXTENT PERMITTED UNDER YOUR LOCAL LAWS, MICROSOFT EXCLUDES THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
-
-FOR AUSTRALIA – YOU HAVE STATUTORY GUARANTEES UNDER THE AUSTRALIAN CONSUMER LAW AND NOTHING IN THESE TERMS IS INTENDED TO AFFECT THOSE RIGHTS.
-
-12. LIMITATION ON AND EXCLUSION OF REMEDIES AND DAMAGES. YOU CAN RECOVER FROM MICROSOFT AND ITS SUPPLIERS ONLY DIRECT DAMAGES UP TO U.S. $5.00. YOU CANNOT RECOVER ANY OTHER DAMAGES, INCLUDING CONSEQUENTIAL, LOST PROFITS, SPECIAL, INDIRECT OR INCIDENTAL DAMAGES.
-
-This limitation applies to
-
-· anything related to the software, services, content (including code) on third party Internet sites, or third party programs; and
-
-· claims for breach of contract, breach of warranty, guarantee or condition, strict liability, negligence, or other tort to the extent permitted by applicable law.
-
-It also applies even if Microsoft knew or should have known about the possibility of the damages. The above limitation or exclusion may not apply to you because your country may not allow the exclusion or limitation of incidental, consequential or other damages.
-
-Please note: As this software is distributed in Quebec, Canada, some of the clauses in this agreement are provided below in French.
-
-Remarque : Ce logiciel étant distribué au Québec, Canada, certaines des clauses dans ce contrat sont fournies ci-dessous en français.
-
-EXONÉRATION DE GARANTIE. Le logiciel visé par une licence est offert « tel quel ». Toute utilisation de ce logiciel est à votre seule risque et péril. Microsoft n’accorde aucune autre garantie expresse. Vous pouvez bénéficier de droits additionnels en vertu du droit local sur la protection des consommateurs, que ce contrat ne peut modifier. La ou elles sont permises par le droit locale, les garanties implicites de qualité marchande, d’adéquation à un usage particulier et d’absence de contrefaçon sont exclues.
-
-LIMITATION DES DOMMAGES-INTÉRÊTS ET EXCLUSION DE RESPONSABILITÉ POUR LES DOMMAGES. Vous pouvez obtenir de Microsoft et de ses fournisseurs une indemnisation en cas de dommages directs uniquement à hauteur de 5,00 $ US. Vous ne pouvez prétendre à aucune indemnisation pour les autres dommages, y compris les dommages spéciaux, indirects ou accessoires et pertes de bénéfices.
-
-Cette limitation concerne :
-
-· tout ce qui est relié au logiciel, aux services ou au contenu (y compris le code) figurant sur des sites Internet tiers ou dans des programmes tiers ; et
-
-· les réclamations au titre de violation de contrat ou de garantie, ou au titre de responsabilité stricte, de négligence ou d’une autre faute dans la limite autorisée par la loi en vigueur.
-
-Elle s’applique également, même si Microsoft connaissait ou devrait connaître l’éventualité d’un tel dommage. Si votre pays n’autorise pas l’exclusion ou la limitation de responsabilité pour les dommages indirects, accessoires ou de quelque nature que ce soit, il se peut que la limitation ou l’exclusion ci-dessus ne s’appliquera pas à votre égard.
-
-EFFET JURIDIQUE. Le présent contrat décrit certains droits juridiques. Vous pourriez avoir d’autres droits prévus par les lois de votre pays. Le présent contrat ne modifie pas les droits que vous confèrent les lois de votre pays si celles-ci ne le permettent pas.
-
-
diff --git a/packages/Microsoft.NETCore.Platforms.1.1.0/runtime.json b/packages/Microsoft.NETCore.Platforms.1.1.0/runtime.json
deleted file mode 100644
index 54769f2662..0000000000
--- a/packages/Microsoft.NETCore.Platforms.1.1.0/runtime.json
+++ /dev/null
@@ -1,406 +0,0 @@
-{
- "runtimes": {
- "base": {
- },
-
- "any": {
- "#import": [ "base" ]
- },
-
- "win": {
- "#import": [ "any" ]
- },
- "win-x86": {
- "#import": [ "win" ]
- },
- "win-x64": {
- "#import": [ "win" ]
- },
-
- "win7": {
- "#import": [ "win" ]
- },
- "win7-x86": {
- "#import": [ "win7", "win-x86" ]
- },
- "win7-x64": {
- "#import": [ "win7", "win-x64" ]
- },
-
- "win8": {
- "#import": [ "win7" ]
- },
- "win8-x86": {
- "#import": [ "win8", "win7-x86" ]
- },
- "win8-x64": {
- "#import": [ "win8", "win7-x64" ]
- },
- "win8-arm": {
- "#import": [ "win8" ]
- },
-
- "win81": {
- "#import": [ "win8" ]
- },
- "win81-x86": {
- "#import": [ "win81", "win8-x86" ]
- },
- "win81-x64": {
- "#import": [ "win81", "win8-x64" ]
- },
- "win81-arm": {
- "#import": [ "win81", "win8-arm" ]
- },
-
- "win10": {
- "#import": [ "win81" ]
- },
- "win10-x86": {
- "#import": [ "win10", "win81-x86" ]
- },
- "win10-x64": {
- "#import": [ "win10", "win81-x64" ]
- },
- "win10-arm": {
- "#import": [ "win10", "win81-arm" ]
- },
- "win10-arm64": {
- "#import": [ "win10" ]
- },
-
- "aot": {
- "#import": [ "any" ]
- },
-
- "win-aot": {
- "#import": [ "win", "aot" ]
- },
- "win-x86-aot": {
- "#import": [ "win-aot", "win-x86" ]
- },
- "win-x64-aot": {
- "#import": [ "win-aot", "win-x64" ]
- },
-
- "win7-aot": {
- "#import": [ "win-aot", "win7" ]
- },
- "win7-x86-aot": {
- "#import": [ "win7-aot", "win7-x86" ]
- },
- "win7-x64-aot": {
- "#import": [ "win7-aot", "win7-x64" ]
- },
-
- "win8-aot": {
- "#import": [ "win8", "win7-aot" ]
- },
- "win8-x86-aot": {
- "#import": [ "win8-aot", "win8-x86", "win7-x86-aot" ]
- },
- "win8-x64-aot": {
- "#import": [ "win8-aot", "win8-x64", "win7-x64-aot" ]
- },
- "win8-arm-aot": {
- "#import": [ "win8-aot", "win8-arm" ]
- },
-
- "win81-aot": {
- "#import": [ "win81", "win8-aot" ]
- },
- "win81-x86-aot": {
- "#import": [ "win81-aot", "win81-x86", "win8-x86-aot" ]
- },
- "win81-x64-aot": {
- "#import": [ "win81-aot", "win81-x64", "win8-x64-aot" ]
- },
- "win81-arm-aot": {
- "#import": [ "win81-aot", "win81-arm", "win8-arm-aot" ]
- },
-
- "win10-aot": {
- "#import": [ "win10", "win81-aot" ]
- },
- "win10-x86-aot": {
- "#import": [ "win10-aot", "win10-x86", "win81-x86-aot" ]
- },
- "win10-x64-aot": {
- "#import": [ "win10-aot", "win10-x64", "win81-x64-aot" ]
- },
- "win10-arm-aot": {
- "#import": [ "win10-aot", "win10-arm", "win81-arm-aot" ]
- },
- "win10-arm64-aot": {
- "#import": [ "win10-aot", "win10-arm64" ]
- },
-
- "unix": {
- "#import": [ "any" ]
- },
- "unix-x64": {
- "#import": [ "unix" ]
- },
-
- "osx": {
- "#import": [ "unix" ]
- },
- "osx-x64": {
- "#import": [ "osx", "unix-x64" ]
- },
-
- "osx.10.10": {
- "#import": [ "osx" ]
- },
- "osx.10.10-x64": {
- "#import": [ "osx.10.10", "osx-x64" ]
- },
-
- "osx.10.11": {
- "#import": [ "osx.10.10" ]
- },
- "osx.10.11-x64": {
- "#import": [ "osx.10.11", "osx.10.10-x64" ]
- },
-
- "osx.10.12": {
- "#import": [ "osx.10.11" ]
- },
- "osx.10.12-x64": {
- "#import": [ "osx.10.12", "osx.10.11-x64" ]
- },
-
- "linux": {
- "#import": [ "unix" ]
- },
- "linux-x64": {
- "#import": [ "linux", "unix-x64" ]
- },
-
- "rhel": {
- "#import": [ "linux" ]
- },
- "rhel-x64": {
- "#import": [ "rhel", "linux-x64" ]
- },
-
- "rhel.7": {
- "#import": [ "rhel" ]
- },
- "rhel.7-x64": {
- "#import": [ "rhel", "rhel-x64" ]
- },
-
- "rhel.7.0": {
- "#import": [ "rhel.7" ]
- },
- "rhel.7.0-x64": {
- "#import": [ "rhel.7", "rhel.7-x64" ]
- },
-
- "rhel.7.1": {
- "#import": [ "rhel.7.0" ]
- },
- "rhel.7.1-x64": {
- "#import": [ "rhel.7.0", "rhel.7.0-x64" ]
- },
-
- "rhel.7.2": {
- "#import": [ "rhel.7.1" ]
- },
- "rhel.7.2-x64": {
- "#import": [ "rhel.7.1", "rhel.7.1-x64" ]
- },
-
- "ol": {
- "#import": [ "rhel" ]
- },
- "ol-x64": {
- "#import": [ "ol", "rhel-x64" ]
- },
-
- "ol.7": {
- "#import": [ "ol", "rhel.7" ]
- },
- "ol.7-x64": {
- "#import": [ "ol.7", "ol-x64", "rhel.7-x64" ]
- },
-
- "ol.7.0": {
- "#import": [ "ol.7", "rhel.7.0" ]
- },
- "ol.7.0-x64": {
- "#import": [ "ol.7", "ol.7-x64", "rhel.7.0-x64" ]
- },
-
- "ol.7.1": {
- "#import": [ "ol.7.0", "rhel.7.1" ]
- },
- "ol.7.1-x64": {
- "#import": [ "ol.7.0", "ol.7.0-x64", "rhel.7.1-x64" ]
- },
-
- "ol.7.2": {
- "#import": [ "ol.7.1", "rhel.7.2" ]
- },
- "ol.7.2-x64": {
- "#import": [ "ol.7.1", "ol.7.1-x64", "rhel.7.2-x64" ]
- },
-
- "centos": {
- "#import": [ "rhel" ]
- },
- "centos-x64": {
- "#import": [ "centos", "rhel-x64" ]
- },
-
- "centos.7": {
- "#import": [ "centos", "rhel.7" ]
- },
- "centos.7-x64": {
- "#import": [ "centos.7", "centos-x64", "rhel.7-x64" ]
- },
-
- "debian": {
- "#import": [ "linux" ]
- },
- "debian-x64": {
- "#import": [ "debian", "linux-x64" ]
- },
-
- "debian.8": {
- "#import": [ "debian" ]
- },
- "debian.8-x64": {
- "#import": [ "debian.8", "debian-x64" ]
- },
-
- "ubuntu": {
- "#import": [ "debian" ]
- },
-
- "ubuntu-x64": {
- "#import": [ "ubuntu", "debian-x64" ]
- },
-
- "ubuntu.14.04": {
- "#import": [ "ubuntu" ]
- },
- "ubuntu.14.04-x64": {
- "#import": [ "ubuntu.14.04", "ubuntu-x64" ]
- },
-
- "ubuntu.14.10": {
- "#import": [ "ubuntu" ]
- },
- "ubuntu.14.10-x64": {
- "#import": [ "ubuntu.14.10", "ubuntu-x64" ]
- },
-
- "ubuntu.15.04": {
- "#import": [ "ubuntu" ]
- },
- "ubuntu.15.04-x64": {
- "#import": [ "ubuntu.15.04", "ubuntu-x64" ]
- },
-
- "ubuntu.15.10": {
- "#import": [ "ubuntu" ]
- },
- "ubuntu.15.10-x64": {
- "#import": [ "ubuntu.15.10", "ubuntu-x64" ]
- },
-
- "ubuntu.16.04": {
- "#import": [ "ubuntu" ]
- },
- "ubuntu.16.04-x64": {
- "#import": [ "ubuntu.16.04", "ubuntu-x64" ]
- },
-
- "ubuntu.16.10": {
- "#import": [ "ubuntu" ]
- },
- "ubuntu.16.10-x64": {
- "#import": [ "ubuntu.16.10", "ubuntu-x64" ]
- },
-
- "linuxmint.17": {
- "#import": [ "ubuntu.14.04" ]
- },
- "linuxmint.17-x64": {
- "#import": [ "linuxmint.17", "ubuntu.14.04-x64" ]
- },
-
- "linuxmint.17.1": {
- "#import": [ "linuxmint.17" ]
- },
- "linuxmint.17.1-x64": {
- "#import": [ "linuxmint.17.1", "linuxmint.17-x64" ]
- },
-
- "linuxmint.17.2": {
- "#import": [ "linuxmint.17.1" ]
- },
- "linuxmint.17.2-x64": {
- "#import": [ "linuxmint.17.2", "linuxmint.17.1-x64" ]
- },
-
- "linuxmint.17.3": {
- "#import": [ "linuxmint.17.2" ]
- },
- "linuxmint.17.3-x64": {
- "#import": [ "linuxmint.17.3", "linuxmint.17.2-x64" ]
- },
-
- "linuxmint.18": {
- "#import": [ "ubuntu.16.04" ]
- },
- "linuxmint.18-x64": {
- "#import": [ "linuxmint.18", "ubuntu.16.04-x64" ]
- },
-
- "fedora": {
- "#import": [ "linux" ]
- },
- "fedora-x64": {
- "#import": [ "fedora", "linux-x64" ]
- },
-
- "fedora.23": {
- "#import": [ "fedora" ]
- },
- "fedora.23-x64": {
- "#import": [ "fedora.23", "fedora-x64" ]
- },
-
- "fedora.24": {
- "#import": [ "fedora" ]
- },
- "fedora.24-x64": {
- "#import": [ "fedora.24", "fedora-x64" ]
- },
-
- "opensuse": {
- "#import": [ "linux" ]
- },
- "opensuse-x64": {
- "#import": [ "opensuse", "linux-x64" ]
- },
-
- "opensuse.13.2": {
- "#import": [ "opensuse" ]
- },
- "opensuse.13.2-x64": {
- "#import": [ "opensuse.13.2", "opensuse-x64" ]
- },
-
- "opensuse.42.1": {
- "#import": [ "opensuse" ]
- },
- "opensuse.42.1-x64": {
- "#import": [ "opensuse.42.1", "opensuse-x64" ]
- }
- }
- }
-
diff --git a/packages/Microsoft.NETCore.Platforms.2.1.0/.signature.p7s b/packages/Microsoft.NETCore.Platforms.2.1.0/.signature.p7s
new file mode 100644
index 0000000000..6cc04bf13f
Binary files /dev/null and b/packages/Microsoft.NETCore.Platforms.2.1.0/.signature.p7s differ
diff --git a/packages/System.Numerics.Vectors.4.4.0/LICENSE.TXT b/packages/Microsoft.NETCore.Platforms.2.1.0/LICENSE.TXT
similarity index 100%
rename from packages/System.Numerics.Vectors.4.4.0/LICENSE.TXT
rename to packages/Microsoft.NETCore.Platforms.2.1.0/LICENSE.TXT
diff --git a/packages/Microsoft.NETCore.Platforms.2.1.0/Microsoft.NETCore.Platforms.2.1.0.nupkg b/packages/Microsoft.NETCore.Platforms.2.1.0/Microsoft.NETCore.Platforms.2.1.0.nupkg
new file mode 100644
index 0000000000..2ba05d3b7f
Binary files /dev/null and b/packages/Microsoft.NETCore.Platforms.2.1.0/Microsoft.NETCore.Platforms.2.1.0.nupkg differ
diff --git a/packages/System.Runtime.CompilerServices.Unsafe.4.5.0-rc1/THIRD-PARTY-NOTICES.TXT b/packages/Microsoft.NETCore.Platforms.2.1.0/THIRD-PARTY-NOTICES.TXT
similarity index 100%
rename from packages/System.Runtime.CompilerServices.Unsafe.4.5.0-rc1/THIRD-PARTY-NOTICES.TXT
rename to packages/Microsoft.NETCore.Platforms.2.1.0/THIRD-PARTY-NOTICES.TXT
diff --git a/packages/Microsoft.NETCore.Platforms.1.1.0/lib/netstandard1.0/_._ b/packages/Microsoft.NETCore.Platforms.2.1.0/lib/netstandard1.0/_._
similarity index 100%
rename from packages/Microsoft.NETCore.Platforms.1.1.0/lib/netstandard1.0/_._
rename to packages/Microsoft.NETCore.Platforms.2.1.0/lib/netstandard1.0/_._
diff --git a/packages/Microsoft.NETCore.Platforms.2.1.0/runtime.json b/packages/Microsoft.NETCore.Platforms.2.1.0/runtime.json
new file mode 100644
index 0000000000..30f99f8e58
--- /dev/null
+++ b/packages/Microsoft.NETCore.Platforms.2.1.0/runtime.json
@@ -0,0 +1,3027 @@
+{
+ "runtimes": {
+ "alpine": {
+ "#import": [
+ "linux-musl"
+ ]
+ },
+ "alpine-corert": {
+ "#import": [
+ "alpine",
+ "linux-musl-corert"
+ ]
+ },
+ "alpine-x64": {
+ "#import": [
+ "alpine",
+ "linux-musl-x64"
+ ]
+ },
+ "alpine-x64-corert": {
+ "#import": [
+ "alpine-corert",
+ "alpine-x64",
+ "linux-musl-x64-corert"
+ ]
+ },
+ "alpine.3.6": {
+ "#import": [
+ "alpine"
+ ]
+ },
+ "alpine.3.6-corert": {
+ "#import": [
+ "alpine.3.6",
+ "alpine-corert"
+ ]
+ },
+ "alpine.3.6-x64": {
+ "#import": [
+ "alpine.3.6",
+ "alpine-x64"
+ ]
+ },
+ "alpine.3.6-x64-corert": {
+ "#import": [
+ "alpine.3.6-corert",
+ "alpine.3.6-x64",
+ "alpine.3.6",
+ "alpine-x64-corert"
+ ]
+ },
+ "alpine.3.7": {
+ "#import": [
+ "alpine.3.6"
+ ]
+ },
+ "alpine.3.7-corert": {
+ "#import": [
+ "alpine.3.7",
+ "alpine.3.6-corert"
+ ]
+ },
+ "alpine.3.7-x64": {
+ "#import": [
+ "alpine.3.7",
+ "alpine.3.6-x64"
+ ]
+ },
+ "alpine.3.7-x64-corert": {
+ "#import": [
+ "alpine.3.7-corert",
+ "alpine.3.7-x64",
+ "alpine.3.7",
+ "alpine.3.6-x64-corert"
+ ]
+ },
+ "android": {
+ "#import": [
+ "linux"
+ ]
+ },
+ "android-arm": {
+ "#import": [
+ "android",
+ "linux-arm"
+ ]
+ },
+ "android-arm-corert": {
+ "#import": [
+ "android-corert",
+ "android-arm",
+ "linux-arm-corert"
+ ]
+ },
+ "android-arm64": {
+ "#import": [
+ "android",
+ "linux-arm64"
+ ]
+ },
+ "android-arm64-corert": {
+ "#import": [
+ "android-corert",
+ "android-arm64",
+ "linux-arm64-corert"
+ ]
+ },
+ "android-corert": {
+ "#import": [
+ "android",
+ "linux-corert"
+ ]
+ },
+ "android.21": {
+ "#import": [
+ "android"
+ ]
+ },
+ "android.21-arm": {
+ "#import": [
+ "android.21",
+ "android-arm"
+ ]
+ },
+ "android.21-arm-corert": {
+ "#import": [
+ "android.21-corert",
+ "android.21-arm",
+ "android.21",
+ "android-arm-corert"
+ ]
+ },
+ "android.21-arm64": {
+ "#import": [
+ "android.21",
+ "android-arm64"
+ ]
+ },
+ "android.21-arm64-corert": {
+ "#import": [
+ "android.21-corert",
+ "android.21-arm64",
+ "android.21",
+ "android-arm64-corert"
+ ]
+ },
+ "android.21-corert": {
+ "#import": [
+ "android.21",
+ "android-corert"
+ ]
+ },
+ "any": {
+ "#import": [
+ "base"
+ ]
+ },
+ "aot": {
+ "#import": [
+ "any"
+ ]
+ },
+ "base": {
+ "#import": []
+ },
+ "centos": {
+ "#import": [
+ "rhel"
+ ]
+ },
+ "centos-corert": {
+ "#import": [
+ "centos",
+ "rhel-corert"
+ ]
+ },
+ "centos-x64": {
+ "#import": [
+ "centos",
+ "rhel-x64"
+ ]
+ },
+ "centos-x64-corert": {
+ "#import": [
+ "centos-corert",
+ "centos-x64",
+ "rhel-x64-corert"
+ ]
+ },
+ "centos.7": {
+ "#import": [
+ "centos",
+ "rhel.7"
+ ]
+ },
+ "centos.7-corert": {
+ "#import": [
+ "centos.7",
+ "centos-corert",
+ "rhel.7-corert"
+ ]
+ },
+ "centos.7-x64": {
+ "#import": [
+ "centos.7",
+ "centos-x64",
+ "rhel.7-x64"
+ ]
+ },
+ "centos.7-x64-corert": {
+ "#import": [
+ "centos.7-corert",
+ "centos.7-x64",
+ "centos.7",
+ "centos-x64-corert"
+ ]
+ },
+ "corert": {
+ "#import": [
+ "any"
+ ]
+ },
+ "debian": {
+ "#import": [
+ "linux"
+ ]
+ },
+ "debian-arm": {
+ "#import": [
+ "debian",
+ "linux-arm"
+ ]
+ },
+ "debian-arm-corert": {
+ "#import": [
+ "debian-corert",
+ "debian-arm",
+ "linux-arm-corert"
+ ]
+ },
+ "debian-arm64": {
+ "#import": [
+ "debian",
+ "linux-arm64"
+ ]
+ },
+ "debian-arm64-corert": {
+ "#import": [
+ "debian-corert",
+ "debian-arm64",
+ "linux-arm64-corert"
+ ]
+ },
+ "debian-armel": {
+ "#import": [
+ "debian",
+ "linux-armel"
+ ]
+ },
+ "debian-armel-corert": {
+ "#import": [
+ "debian-corert",
+ "debian-armel",
+ "linux-armel-corert"
+ ]
+ },
+ "debian-corert": {
+ "#import": [
+ "debian",
+ "linux-corert"
+ ]
+ },
+ "debian-x64": {
+ "#import": [
+ "debian",
+ "linux-x64"
+ ]
+ },
+ "debian-x64-corert": {
+ "#import": [
+ "debian-corert",
+ "debian-x64",
+ "linux-x64-corert"
+ ]
+ },
+ "debian-x86": {
+ "#import": [
+ "debian",
+ "linux-x86"
+ ]
+ },
+ "debian-x86-corert": {
+ "#import": [
+ "debian-corert",
+ "debian-x86",
+ "linux-x86-corert"
+ ]
+ },
+ "debian.8": {
+ "#import": [
+ "debian"
+ ]
+ },
+ "debian.8-arm": {
+ "#import": [
+ "debian.8",
+ "debian-arm"
+ ]
+ },
+ "debian.8-arm-corert": {
+ "#import": [
+ "debian.8-corert",
+ "debian.8-arm",
+ "debian.8",
+ "debian-arm-corert"
+ ]
+ },
+ "debian.8-arm64": {
+ "#import": [
+ "debian.8",
+ "debian-arm64"
+ ]
+ },
+ "debian.8-arm64-corert": {
+ "#import": [
+ "debian.8-corert",
+ "debian.8-arm64",
+ "debian.8",
+ "debian-arm64-corert"
+ ]
+ },
+ "debian.8-armel": {
+ "#import": [
+ "debian.8",
+ "debian-armel"
+ ]
+ },
+ "debian.8-armel-corert": {
+ "#import": [
+ "debian.8-corert",
+ "debian.8-armel",
+ "debian.8",
+ "debian-armel-corert"
+ ]
+ },
+ "debian.8-corert": {
+ "#import": [
+ "debian.8",
+ "debian-corert"
+ ]
+ },
+ "debian.8-x64": {
+ "#import": [
+ "debian.8",
+ "debian-x64"
+ ]
+ },
+ "debian.8-x64-corert": {
+ "#import": [
+ "debian.8-corert",
+ "debian.8-x64",
+ "debian.8",
+ "debian-x64-corert"
+ ]
+ },
+ "debian.8-x86": {
+ "#import": [
+ "debian.8",
+ "debian-x86"
+ ]
+ },
+ "debian.8-x86-corert": {
+ "#import": [
+ "debian.8-corert",
+ "debian.8-x86",
+ "debian.8",
+ "debian-x86-corert"
+ ]
+ },
+ "debian.9": {
+ "#import": [
+ "debian"
+ ]
+ },
+ "debian.9-arm": {
+ "#import": [
+ "debian.9",
+ "debian-arm"
+ ]
+ },
+ "debian.9-arm-corert": {
+ "#import": [
+ "debian.9-corert",
+ "debian.9-arm",
+ "debian.9",
+ "debian-arm-corert"
+ ]
+ },
+ "debian.9-arm64": {
+ "#import": [
+ "debian.9",
+ "debian-arm64"
+ ]
+ },
+ "debian.9-arm64-corert": {
+ "#import": [
+ "debian.9-corert",
+ "debian.9-arm64",
+ "debian.9",
+ "debian-arm64-corert"
+ ]
+ },
+ "debian.9-armel": {
+ "#import": [
+ "debian.9",
+ "debian-armel"
+ ]
+ },
+ "debian.9-armel-corert": {
+ "#import": [
+ "debian.9-corert",
+ "debian.9-armel",
+ "debian.9",
+ "debian-armel-corert"
+ ]
+ },
+ "debian.9-corert": {
+ "#import": [
+ "debian.9",
+ "debian-corert"
+ ]
+ },
+ "debian.9-x64": {
+ "#import": [
+ "debian.9",
+ "debian-x64"
+ ]
+ },
+ "debian.9-x64-corert": {
+ "#import": [
+ "debian.9-corert",
+ "debian.9-x64",
+ "debian.9",
+ "debian-x64-corert"
+ ]
+ },
+ "debian.9-x86": {
+ "#import": [
+ "debian.9",
+ "debian-x86"
+ ]
+ },
+ "debian.9-x86-corert": {
+ "#import": [
+ "debian.9-corert",
+ "debian.9-x86",
+ "debian.9",
+ "debian-x86-corert"
+ ]
+ },
+ "fedora": {
+ "#import": [
+ "linux"
+ ]
+ },
+ "fedora-corert": {
+ "#import": [
+ "fedora",
+ "linux-corert"
+ ]
+ },
+ "fedora-x64": {
+ "#import": [
+ "fedora",
+ "linux-x64"
+ ]
+ },
+ "fedora-x64-corert": {
+ "#import": [
+ "fedora-corert",
+ "fedora-x64",
+ "linux-x64-corert"
+ ]
+ },
+ "fedora.23": {
+ "#import": [
+ "fedora"
+ ]
+ },
+ "fedora.23-corert": {
+ "#import": [
+ "fedora.23",
+ "fedora-corert"
+ ]
+ },
+ "fedora.23-x64": {
+ "#import": [
+ "fedora.23",
+ "fedora-x64"
+ ]
+ },
+ "fedora.23-x64-corert": {
+ "#import": [
+ "fedora.23-corert",
+ "fedora.23-x64",
+ "fedora.23",
+ "fedora-x64-corert"
+ ]
+ },
+ "fedora.24": {
+ "#import": [
+ "fedora"
+ ]
+ },
+ "fedora.24-corert": {
+ "#import": [
+ "fedora.24",
+ "fedora-corert"
+ ]
+ },
+ "fedora.24-x64": {
+ "#import": [
+ "fedora.24",
+ "fedora-x64"
+ ]
+ },
+ "fedora.24-x64-corert": {
+ "#import": [
+ "fedora.24-corert",
+ "fedora.24-x64",
+ "fedora.24",
+ "fedora-x64-corert"
+ ]
+ },
+ "fedora.25": {
+ "#import": [
+ "fedora"
+ ]
+ },
+ "fedora.25-corert": {
+ "#import": [
+ "fedora.25",
+ "fedora-corert"
+ ]
+ },
+ "fedora.25-x64": {
+ "#import": [
+ "fedora.25",
+ "fedora-x64"
+ ]
+ },
+ "fedora.25-x64-corert": {
+ "#import": [
+ "fedora.25-corert",
+ "fedora.25-x64",
+ "fedora.25",
+ "fedora-x64-corert"
+ ]
+ },
+ "fedora.26": {
+ "#import": [
+ "fedora"
+ ]
+ },
+ "fedora.26-corert": {
+ "#import": [
+ "fedora.26",
+ "fedora-corert"
+ ]
+ },
+ "fedora.26-x64": {
+ "#import": [
+ "fedora.26",
+ "fedora-x64"
+ ]
+ },
+ "fedora.26-x64-corert": {
+ "#import": [
+ "fedora.26-corert",
+ "fedora.26-x64",
+ "fedora.26",
+ "fedora-x64-corert"
+ ]
+ },
+ "fedora.27": {
+ "#import": [
+ "fedora"
+ ]
+ },
+ "fedora.27-corert": {
+ "#import": [
+ "fedora.27",
+ "fedora-corert"
+ ]
+ },
+ "fedora.27-x64": {
+ "#import": [
+ "fedora.27",
+ "fedora-x64"
+ ]
+ },
+ "fedora.27-x64-corert": {
+ "#import": [
+ "fedora.27-corert",
+ "fedora.27-x64",
+ "fedora.27",
+ "fedora-x64-corert"
+ ]
+ },
+ "fedora.28": {
+ "#import": [
+ "fedora"
+ ]
+ },
+ "fedora.28-corert": {
+ "#import": [
+ "fedora.28",
+ "fedora-corert"
+ ]
+ },
+ "fedora.28-x64": {
+ "#import": [
+ "fedora.28",
+ "fedora-x64"
+ ]
+ },
+ "fedora.28-x64-corert": {
+ "#import": [
+ "fedora.28-corert",
+ "fedora.28-x64",
+ "fedora.28",
+ "fedora-x64-corert"
+ ]
+ },
+ "gentoo": {
+ "#import": [
+ "linux"
+ ]
+ },
+ "gentoo-corert": {
+ "#import": [
+ "gentoo",
+ "linux-corert"
+ ]
+ },
+ "gentoo-x64": {
+ "#import": [
+ "gentoo",
+ "linux-x64"
+ ]
+ },
+ "gentoo-x64-corert": {
+ "#import": [
+ "gentoo-corert",
+ "gentoo-x64",
+ "linux-x64-corert"
+ ]
+ },
+ "linux": {
+ "#import": [
+ "unix"
+ ]
+ },
+ "linux-arm": {
+ "#import": [
+ "linux",
+ "unix-arm"
+ ]
+ },
+ "linux-arm-corert": {
+ "#import": [
+ "linux-corert",
+ "linux-arm",
+ "unix-arm-corert"
+ ]
+ },
+ "linux-arm64": {
+ "#import": [
+ "linux",
+ "unix-arm64"
+ ]
+ },
+ "linux-arm64-corert": {
+ "#import": [
+ "linux-corert",
+ "linux-arm64",
+ "unix-arm64-corert"
+ ]
+ },
+ "linux-armel": {
+ "#import": [
+ "linux",
+ "unix-armel"
+ ]
+ },
+ "linux-armel-corert": {
+ "#import": [
+ "linux-corert",
+ "linux-armel",
+ "unix-armel-corert"
+ ]
+ },
+ "linux-corert": {
+ "#import": [
+ "linux",
+ "unix-corert"
+ ]
+ },
+ "linux-musl": {
+ "#import": [
+ "linux"
+ ]
+ },
+ "linux-musl-arm": {
+ "#import": [
+ "linux-musl",
+ "linux-arm"
+ ]
+ },
+ "linux-musl-arm-corert": {
+ "#import": [
+ "linux-musl-corert",
+ "linux-musl-arm",
+ "linux-arm-corert"
+ ]
+ },
+ "linux-musl-arm64": {
+ "#import": [
+ "linux-musl",
+ "linux-arm64"
+ ]
+ },
+ "linux-musl-arm64-corert": {
+ "#import": [
+ "linux-musl-corert",
+ "linux-musl-arm64",
+ "linux-arm64-corert"
+ ]
+ },
+ "linux-musl-armel": {
+ "#import": [
+ "linux-musl",
+ "linux-armel"
+ ]
+ },
+ "linux-musl-armel-corert": {
+ "#import": [
+ "linux-musl-corert",
+ "linux-musl-armel",
+ "linux-armel-corert"
+ ]
+ },
+ "linux-musl-corert": {
+ "#import": [
+ "linux-musl",
+ "linux-corert"
+ ]
+ },
+ "linux-musl-x64": {
+ "#import": [
+ "linux-musl",
+ "linux-x64"
+ ]
+ },
+ "linux-musl-x64-corert": {
+ "#import": [
+ "linux-musl-corert",
+ "linux-musl-x64",
+ "linux-x64-corert"
+ ]
+ },
+ "linux-musl-x86": {
+ "#import": [
+ "linux-musl",
+ "linux-x86"
+ ]
+ },
+ "linux-musl-x86-corert": {
+ "#import": [
+ "linux-musl-corert",
+ "linux-musl-x86",
+ "linux-x86-corert"
+ ]
+ },
+ "linux-x64": {
+ "#import": [
+ "linux",
+ "unix-x64"
+ ]
+ },
+ "linux-x64-corert": {
+ "#import": [
+ "linux-corert",
+ "linux-x64",
+ "unix-x64-corert"
+ ]
+ },
+ "linux-x86": {
+ "#import": [
+ "linux",
+ "unix-x86"
+ ]
+ },
+ "linux-x86-corert": {
+ "#import": [
+ "linux-corert",
+ "linux-x86",
+ "unix-x86-corert"
+ ]
+ },
+ "linuxmint.17": {
+ "#import": [
+ "ubuntu.14.04"
+ ]
+ },
+ "linuxmint.17-corert": {
+ "#import": [
+ "linuxmint.17",
+ "ubuntu.14.04-corert"
+ ]
+ },
+ "linuxmint.17-x64": {
+ "#import": [
+ "linuxmint.17",
+ "ubuntu.14.04-x64"
+ ]
+ },
+ "linuxmint.17-x64-corert": {
+ "#import": [
+ "linuxmint.17-corert",
+ "linuxmint.17-x64",
+ "ubuntu.14.04-x64-corert"
+ ]
+ },
+ "linuxmint.17.1": {
+ "#import": [
+ "linuxmint.17"
+ ]
+ },
+ "linuxmint.17.1-corert": {
+ "#import": [
+ "linuxmint.17.1",
+ "linuxmint.17-corert"
+ ]
+ },
+ "linuxmint.17.1-x64": {
+ "#import": [
+ "linuxmint.17.1",
+ "linuxmint.17-x64"
+ ]
+ },
+ "linuxmint.17.1-x64-corert": {
+ "#import": [
+ "linuxmint.17.1-corert",
+ "linuxmint.17.1-x64",
+ "linuxmint.17.1",
+ "linuxmint.17-x64-corert"
+ ]
+ },
+ "linuxmint.17.2": {
+ "#import": [
+ "linuxmint.17.1"
+ ]
+ },
+ "linuxmint.17.2-corert": {
+ "#import": [
+ "linuxmint.17.2",
+ "linuxmint.17.1-corert"
+ ]
+ },
+ "linuxmint.17.2-x64": {
+ "#import": [
+ "linuxmint.17.2",
+ "linuxmint.17.1-x64"
+ ]
+ },
+ "linuxmint.17.2-x64-corert": {
+ "#import": [
+ "linuxmint.17.2-corert",
+ "linuxmint.17.2-x64",
+ "linuxmint.17.2",
+ "linuxmint.17.1-x64-corert"
+ ]
+ },
+ "linuxmint.17.3": {
+ "#import": [
+ "linuxmint.17.2"
+ ]
+ },
+ "linuxmint.17.3-corert": {
+ "#import": [
+ "linuxmint.17.3",
+ "linuxmint.17.2-corert"
+ ]
+ },
+ "linuxmint.17.3-x64": {
+ "#import": [
+ "linuxmint.17.3",
+ "linuxmint.17.2-x64"
+ ]
+ },
+ "linuxmint.17.3-x64-corert": {
+ "#import": [
+ "linuxmint.17.3-corert",
+ "linuxmint.17.3-x64",
+ "linuxmint.17.3",
+ "linuxmint.17.2-x64-corert"
+ ]
+ },
+ "linuxmint.18": {
+ "#import": [
+ "ubuntu.16.04"
+ ]
+ },
+ "linuxmint.18-corert": {
+ "#import": [
+ "linuxmint.18",
+ "ubuntu.16.04-corert"
+ ]
+ },
+ "linuxmint.18-x64": {
+ "#import": [
+ "linuxmint.18",
+ "ubuntu.16.04-x64"
+ ]
+ },
+ "linuxmint.18-x64-corert": {
+ "#import": [
+ "linuxmint.18-corert",
+ "linuxmint.18-x64",
+ "ubuntu.16.04-x64-corert"
+ ]
+ },
+ "linuxmint.18.1": {
+ "#import": [
+ "linuxmint.18"
+ ]
+ },
+ "linuxmint.18.1-corert": {
+ "#import": [
+ "linuxmint.18.1",
+ "linuxmint.18-corert"
+ ]
+ },
+ "linuxmint.18.1-x64": {
+ "#import": [
+ "linuxmint.18.1",
+ "linuxmint.18-x64"
+ ]
+ },
+ "linuxmint.18.1-x64-corert": {
+ "#import": [
+ "linuxmint.18.1-corert",
+ "linuxmint.18.1-x64",
+ "linuxmint.18.1",
+ "linuxmint.18-x64-corert"
+ ]
+ },
+ "linuxmint.18.2": {
+ "#import": [
+ "linuxmint.18.1"
+ ]
+ },
+ "linuxmint.18.2-corert": {
+ "#import": [
+ "linuxmint.18.2",
+ "linuxmint.18.1-corert"
+ ]
+ },
+ "linuxmint.18.2-x64": {
+ "#import": [
+ "linuxmint.18.2",
+ "linuxmint.18.1-x64"
+ ]
+ },
+ "linuxmint.18.2-x64-corert": {
+ "#import": [
+ "linuxmint.18.2-corert",
+ "linuxmint.18.2-x64",
+ "linuxmint.18.2",
+ "linuxmint.18.1-x64-corert"
+ ]
+ },
+ "linuxmint.18.3": {
+ "#import": [
+ "linuxmint.18.2"
+ ]
+ },
+ "linuxmint.18.3-corert": {
+ "#import": [
+ "linuxmint.18.3",
+ "linuxmint.18.2-corert"
+ ]
+ },
+ "linuxmint.18.3-x64": {
+ "#import": [
+ "linuxmint.18.3",
+ "linuxmint.18.2-x64"
+ ]
+ },
+ "linuxmint.18.3-x64-corert": {
+ "#import": [
+ "linuxmint.18.3-corert",
+ "linuxmint.18.3-x64",
+ "linuxmint.18.3",
+ "linuxmint.18.2-x64-corert"
+ ]
+ },
+ "linuxmint.19": {
+ "#import": [
+ "ubuntu.18.04"
+ ]
+ },
+ "linuxmint.19-corert": {
+ "#import": [
+ "linuxmint.19",
+ "ubuntu.18.04-corert"
+ ]
+ },
+ "linuxmint.19-x64": {
+ "#import": [
+ "linuxmint.19",
+ "ubuntu.18.04-x64"
+ ]
+ },
+ "linuxmint.19-x64-corert": {
+ "#import": [
+ "linuxmint.19-corert",
+ "linuxmint.19-x64",
+ "ubuntu.18.04-x64-corert"
+ ]
+ },
+ "ol": {
+ "#import": [
+ "rhel"
+ ]
+ },
+ "ol-corert": {
+ "#import": [
+ "ol",
+ "rhel-corert"
+ ]
+ },
+ "ol-x64": {
+ "#import": [
+ "ol",
+ "rhel-x64"
+ ]
+ },
+ "ol-x64-corert": {
+ "#import": [
+ "ol-corert",
+ "ol-x64",
+ "rhel-x64-corert"
+ ]
+ },
+ "ol.7": {
+ "#import": [
+ "ol",
+ "rhel.7"
+ ]
+ },
+ "ol.7-corert": {
+ "#import": [
+ "ol.7",
+ "ol-corert",
+ "rhel.7-corert"
+ ]
+ },
+ "ol.7-x64": {
+ "#import": [
+ "ol.7",
+ "ol-x64",
+ "rhel.7-x64"
+ ]
+ },
+ "ol.7-x64-corert": {
+ "#import": [
+ "ol.7-corert",
+ "ol.7-x64",
+ "ol.7",
+ "ol-x64-corert"
+ ]
+ },
+ "ol.7.0": {
+ "#import": [
+ "ol.7",
+ "rhel.7.0"
+ ]
+ },
+ "ol.7.0-corert": {
+ "#import": [
+ "ol.7.0",
+ "ol.7-corert",
+ "rhel.7.0-corert"
+ ]
+ },
+ "ol.7.0-x64": {
+ "#import": [
+ "ol.7.0",
+ "ol.7-x64",
+ "rhel.7.0-x64"
+ ]
+ },
+ "ol.7.0-x64-corert": {
+ "#import": [
+ "ol.7.0-corert",
+ "ol.7.0-x64",
+ "ol.7.0",
+ "ol.7-x64-corert"
+ ]
+ },
+ "ol.7.1": {
+ "#import": [
+ "ol.7.0",
+ "rhel.7.1"
+ ]
+ },
+ "ol.7.1-corert": {
+ "#import": [
+ "ol.7.1",
+ "ol.7.0-corert",
+ "rhel.7.1-corert"
+ ]
+ },
+ "ol.7.1-x64": {
+ "#import": [
+ "ol.7.1",
+ "ol.7.0-x64",
+ "rhel.7.1-x64"
+ ]
+ },
+ "ol.7.1-x64-corert": {
+ "#import": [
+ "ol.7.1-corert",
+ "ol.7.1-x64",
+ "ol.7.1",
+ "ol.7.0-x64-corert"
+ ]
+ },
+ "ol.7.2": {
+ "#import": [
+ "ol.7.1",
+ "rhel.7.2"
+ ]
+ },
+ "ol.7.2-corert": {
+ "#import": [
+ "ol.7.2",
+ "ol.7.1-corert",
+ "rhel.7.2-corert"
+ ]
+ },
+ "ol.7.2-x64": {
+ "#import": [
+ "ol.7.2",
+ "ol.7.1-x64",
+ "rhel.7.2-x64"
+ ]
+ },
+ "ol.7.2-x64-corert": {
+ "#import": [
+ "ol.7.2-corert",
+ "ol.7.2-x64",
+ "ol.7.2",
+ "ol.7.1-x64-corert"
+ ]
+ },
+ "ol.7.3": {
+ "#import": [
+ "ol.7.2",
+ "rhel.7.3"
+ ]
+ },
+ "ol.7.3-corert": {
+ "#import": [
+ "ol.7.3",
+ "ol.7.2-corert",
+ "rhel.7.3-corert"
+ ]
+ },
+ "ol.7.3-x64": {
+ "#import": [
+ "ol.7.3",
+ "ol.7.2-x64",
+ "rhel.7.3-x64"
+ ]
+ },
+ "ol.7.3-x64-corert": {
+ "#import": [
+ "ol.7.3-corert",
+ "ol.7.3-x64",
+ "ol.7.3",
+ "ol.7.2-x64-corert"
+ ]
+ },
+ "ol.7.4": {
+ "#import": [
+ "ol.7.3",
+ "rhel.7.4"
+ ]
+ },
+ "ol.7.4-corert": {
+ "#import": [
+ "ol.7.4",
+ "ol.7.3-corert",
+ "rhel.7.4-corert"
+ ]
+ },
+ "ol.7.4-x64": {
+ "#import": [
+ "ol.7.4",
+ "ol.7.3-x64",
+ "rhel.7.4-x64"
+ ]
+ },
+ "ol.7.4-x64-corert": {
+ "#import": [
+ "ol.7.4-corert",
+ "ol.7.4-x64",
+ "ol.7.4",
+ "ol.7.3-x64-corert"
+ ]
+ },
+ "opensuse": {
+ "#import": [
+ "linux"
+ ]
+ },
+ "opensuse-corert": {
+ "#import": [
+ "opensuse",
+ "linux-corert"
+ ]
+ },
+ "opensuse-x64": {
+ "#import": [
+ "opensuse",
+ "linux-x64"
+ ]
+ },
+ "opensuse-x64-corert": {
+ "#import": [
+ "opensuse-corert",
+ "opensuse-x64",
+ "linux-x64-corert"
+ ]
+ },
+ "opensuse.13.2": {
+ "#import": [
+ "opensuse"
+ ]
+ },
+ "opensuse.13.2-corert": {
+ "#import": [
+ "opensuse.13.2",
+ "opensuse-corert"
+ ]
+ },
+ "opensuse.13.2-x64": {
+ "#import": [
+ "opensuse.13.2",
+ "opensuse-x64"
+ ]
+ },
+ "opensuse.13.2-x64-corert": {
+ "#import": [
+ "opensuse.13.2-corert",
+ "opensuse.13.2-x64",
+ "opensuse.13.2",
+ "opensuse-x64-corert"
+ ]
+ },
+ "opensuse.42.1": {
+ "#import": [
+ "opensuse"
+ ]
+ },
+ "opensuse.42.1-corert": {
+ "#import": [
+ "opensuse.42.1",
+ "opensuse-corert"
+ ]
+ },
+ "opensuse.42.1-x64": {
+ "#import": [
+ "opensuse.42.1",
+ "opensuse-x64"
+ ]
+ },
+ "opensuse.42.1-x64-corert": {
+ "#import": [
+ "opensuse.42.1-corert",
+ "opensuse.42.1-x64",
+ "opensuse.42.1",
+ "opensuse-x64-corert"
+ ]
+ },
+ "opensuse.42.2": {
+ "#import": [
+ "opensuse"
+ ]
+ },
+ "opensuse.42.2-corert": {
+ "#import": [
+ "opensuse.42.2",
+ "opensuse-corert"
+ ]
+ },
+ "opensuse.42.2-x64": {
+ "#import": [
+ "opensuse.42.2",
+ "opensuse-x64"
+ ]
+ },
+ "opensuse.42.2-x64-corert": {
+ "#import": [
+ "opensuse.42.2-corert",
+ "opensuse.42.2-x64",
+ "opensuse.42.2",
+ "opensuse-x64-corert"
+ ]
+ },
+ "opensuse.42.3": {
+ "#import": [
+ "opensuse"
+ ]
+ },
+ "opensuse.42.3-corert": {
+ "#import": [
+ "opensuse.42.3",
+ "opensuse-corert"
+ ]
+ },
+ "opensuse.42.3-x64": {
+ "#import": [
+ "opensuse.42.3",
+ "opensuse-x64"
+ ]
+ },
+ "opensuse.42.3-x64-corert": {
+ "#import": [
+ "opensuse.42.3-corert",
+ "opensuse.42.3-x64",
+ "opensuse.42.3",
+ "opensuse-x64-corert"
+ ]
+ },
+ "osx": {
+ "#import": [
+ "unix"
+ ]
+ },
+ "osx-corert": {
+ "#import": [
+ "osx",
+ "unix-corert"
+ ]
+ },
+ "osx-x64": {
+ "#import": [
+ "osx",
+ "unix-x64"
+ ]
+ },
+ "osx-x64-corert": {
+ "#import": [
+ "osx-corert",
+ "osx-x64",
+ "unix-x64-corert"
+ ]
+ },
+ "osx.10.10": {
+ "#import": [
+ "osx"
+ ]
+ },
+ "osx.10.10-corert": {
+ "#import": [
+ "osx.10.10",
+ "osx-corert"
+ ]
+ },
+ "osx.10.10-x64": {
+ "#import": [
+ "osx.10.10",
+ "osx-x64"
+ ]
+ },
+ "osx.10.10-x64-corert": {
+ "#import": [
+ "osx.10.10-corert",
+ "osx.10.10-x64",
+ "osx.10.10",
+ "osx-x64-corert"
+ ]
+ },
+ "osx.10.11": {
+ "#import": [
+ "osx.10.10"
+ ]
+ },
+ "osx.10.11-corert": {
+ "#import": [
+ "osx.10.11",
+ "osx.10.10-corert"
+ ]
+ },
+ "osx.10.11-x64": {
+ "#import": [
+ "osx.10.11",
+ "osx.10.10-x64"
+ ]
+ },
+ "osx.10.11-x64-corert": {
+ "#import": [
+ "osx.10.11-corert",
+ "osx.10.11-x64",
+ "osx.10.11",
+ "osx.10.10-x64-corert"
+ ]
+ },
+ "osx.10.12": {
+ "#import": [
+ "osx.10.11"
+ ]
+ },
+ "osx.10.12-corert": {
+ "#import": [
+ "osx.10.12",
+ "osx.10.11-corert"
+ ]
+ },
+ "osx.10.12-x64": {
+ "#import": [
+ "osx.10.12",
+ "osx.10.11-x64"
+ ]
+ },
+ "osx.10.12-x64-corert": {
+ "#import": [
+ "osx.10.12-corert",
+ "osx.10.12-x64",
+ "osx.10.12",
+ "osx.10.11-x64-corert"
+ ]
+ },
+ "osx.10.13": {
+ "#import": [
+ "osx.10.12"
+ ]
+ },
+ "osx.10.13-corert": {
+ "#import": [
+ "osx.10.13",
+ "osx.10.12-corert"
+ ]
+ },
+ "osx.10.13-x64": {
+ "#import": [
+ "osx.10.13",
+ "osx.10.12-x64"
+ ]
+ },
+ "osx.10.13-x64-corert": {
+ "#import": [
+ "osx.10.13-corert",
+ "osx.10.13-x64",
+ "osx.10.13",
+ "osx.10.12-x64-corert"
+ ]
+ },
+ "rhel": {
+ "#import": [
+ "linux"
+ ]
+ },
+ "rhel-corert": {
+ "#import": [
+ "rhel",
+ "linux-corert"
+ ]
+ },
+ "rhel-x64": {
+ "#import": [
+ "rhel",
+ "linux-x64"
+ ]
+ },
+ "rhel-x64-corert": {
+ "#import": [
+ "rhel-corert",
+ "rhel-x64",
+ "linux-x64-corert"
+ ]
+ },
+ "rhel.6": {
+ "#import": [
+ "rhel"
+ ]
+ },
+ "rhel.6-corert": {
+ "#import": [
+ "rhel.6",
+ "rhel-corert"
+ ]
+ },
+ "rhel.6-x64": {
+ "#import": [
+ "rhel.6",
+ "rhel-x64"
+ ]
+ },
+ "rhel.6-x64-corert": {
+ "#import": [
+ "rhel.6-corert",
+ "rhel.6-x64",
+ "rhel.6",
+ "rhel-x64-corert"
+ ]
+ },
+ "rhel.7": {
+ "#import": [
+ "rhel"
+ ]
+ },
+ "rhel.7-corert": {
+ "#import": [
+ "rhel.7",
+ "rhel-corert"
+ ]
+ },
+ "rhel.7-x64": {
+ "#import": [
+ "rhel.7",
+ "rhel-x64"
+ ]
+ },
+ "rhel.7-x64-corert": {
+ "#import": [
+ "rhel.7-corert",
+ "rhel.7-x64",
+ "rhel.7",
+ "rhel-x64-corert"
+ ]
+ },
+ "rhel.7.0": {
+ "#import": [
+ "rhel.7"
+ ]
+ },
+ "rhel.7.0-corert": {
+ "#import": [
+ "rhel.7.0",
+ "rhel.7-corert"
+ ]
+ },
+ "rhel.7.0-x64": {
+ "#import": [
+ "rhel.7.0",
+ "rhel.7-x64"
+ ]
+ },
+ "rhel.7.0-x64-corert": {
+ "#import": [
+ "rhel.7.0-corert",
+ "rhel.7.0-x64",
+ "rhel.7.0",
+ "rhel.7-x64-corert"
+ ]
+ },
+ "rhel.7.1": {
+ "#import": [
+ "rhel.7.0"
+ ]
+ },
+ "rhel.7.1-corert": {
+ "#import": [
+ "rhel.7.1",
+ "rhel.7.0-corert"
+ ]
+ },
+ "rhel.7.1-x64": {
+ "#import": [
+ "rhel.7.1",
+ "rhel.7.0-x64"
+ ]
+ },
+ "rhel.7.1-x64-corert": {
+ "#import": [
+ "rhel.7.1-corert",
+ "rhel.7.1-x64",
+ "rhel.7.1",
+ "rhel.7.0-x64-corert"
+ ]
+ },
+ "rhel.7.2": {
+ "#import": [
+ "rhel.7.1"
+ ]
+ },
+ "rhel.7.2-corert": {
+ "#import": [
+ "rhel.7.2",
+ "rhel.7.1-corert"
+ ]
+ },
+ "rhel.7.2-x64": {
+ "#import": [
+ "rhel.7.2",
+ "rhel.7.1-x64"
+ ]
+ },
+ "rhel.7.2-x64-corert": {
+ "#import": [
+ "rhel.7.2-corert",
+ "rhel.7.2-x64",
+ "rhel.7.2",
+ "rhel.7.1-x64-corert"
+ ]
+ },
+ "rhel.7.3": {
+ "#import": [
+ "rhel.7.2"
+ ]
+ },
+ "rhel.7.3-corert": {
+ "#import": [
+ "rhel.7.3",
+ "rhel.7.2-corert"
+ ]
+ },
+ "rhel.7.3-x64": {
+ "#import": [
+ "rhel.7.3",
+ "rhel.7.2-x64"
+ ]
+ },
+ "rhel.7.3-x64-corert": {
+ "#import": [
+ "rhel.7.3-corert",
+ "rhel.7.3-x64",
+ "rhel.7.3",
+ "rhel.7.2-x64-corert"
+ ]
+ },
+ "rhel.7.4": {
+ "#import": [
+ "rhel.7.3"
+ ]
+ },
+ "rhel.7.4-corert": {
+ "#import": [
+ "rhel.7.4",
+ "rhel.7.3-corert"
+ ]
+ },
+ "rhel.7.4-x64": {
+ "#import": [
+ "rhel.7.4",
+ "rhel.7.3-x64"
+ ]
+ },
+ "rhel.7.4-x64-corert": {
+ "#import": [
+ "rhel.7.4-corert",
+ "rhel.7.4-x64",
+ "rhel.7.4",
+ "rhel.7.3-x64-corert"
+ ]
+ },
+ "sles": {
+ "#import": [
+ "linux"
+ ]
+ },
+ "sles-corert": {
+ "#import": [
+ "sles",
+ "linux-corert"
+ ]
+ },
+ "sles-x64": {
+ "#import": [
+ "sles",
+ "linux-x64"
+ ]
+ },
+ "sles-x64-corert": {
+ "#import": [
+ "sles-corert",
+ "sles-x64",
+ "linux-x64-corert"
+ ]
+ },
+ "sles.12": {
+ "#import": [
+ "sles"
+ ]
+ },
+ "sles.12-corert": {
+ "#import": [
+ "sles.12",
+ "sles-corert"
+ ]
+ },
+ "sles.12-x64": {
+ "#import": [
+ "sles.12",
+ "sles-x64"
+ ]
+ },
+ "sles.12-x64-corert": {
+ "#import": [
+ "sles.12-corert",
+ "sles.12-x64",
+ "sles.12",
+ "sles-x64-corert"
+ ]
+ },
+ "sles.12.1": {
+ "#import": [
+ "sles.12"
+ ]
+ },
+ "sles.12.1-corert": {
+ "#import": [
+ "sles.12.1",
+ "sles.12-corert"
+ ]
+ },
+ "sles.12.1-x64": {
+ "#import": [
+ "sles.12.1",
+ "sles.12-x64"
+ ]
+ },
+ "sles.12.1-x64-corert": {
+ "#import": [
+ "sles.12.1-corert",
+ "sles.12.1-x64",
+ "sles.12.1",
+ "sles.12-x64-corert"
+ ]
+ },
+ "sles.12.2": {
+ "#import": [
+ "sles.12.1"
+ ]
+ },
+ "sles.12.2-corert": {
+ "#import": [
+ "sles.12.2",
+ "sles.12.1-corert"
+ ]
+ },
+ "sles.12.2-x64": {
+ "#import": [
+ "sles.12.2",
+ "sles.12.1-x64"
+ ]
+ },
+ "sles.12.2-x64-corert": {
+ "#import": [
+ "sles.12.2-corert",
+ "sles.12.2-x64",
+ "sles.12.2",
+ "sles.12.1-x64-corert"
+ ]
+ },
+ "sles.12.3": {
+ "#import": [
+ "sles.12.2"
+ ]
+ },
+ "sles.12.3-corert": {
+ "#import": [
+ "sles.12.3",
+ "sles.12.2-corert"
+ ]
+ },
+ "sles.12.3-x64": {
+ "#import": [
+ "sles.12.3",
+ "sles.12.2-x64"
+ ]
+ },
+ "sles.12.3-x64-corert": {
+ "#import": [
+ "sles.12.3-corert",
+ "sles.12.3-x64",
+ "sles.12.3",
+ "sles.12.2-x64-corert"
+ ]
+ },
+ "tizen": {
+ "#import": [
+ "linux"
+ ]
+ },
+ "tizen-armel": {
+ "#import": [
+ "tizen",
+ "linux-armel"
+ ]
+ },
+ "tizen-armel-corert": {
+ "#import": [
+ "tizen-corert",
+ "tizen-armel",
+ "linux-armel-corert"
+ ]
+ },
+ "tizen-corert": {
+ "#import": [
+ "tizen",
+ "linux-corert"
+ ]
+ },
+ "tizen.4.0.0": {
+ "#import": [
+ "tizen"
+ ]
+ },
+ "tizen.4.0.0-armel": {
+ "#import": [
+ "tizen.4.0.0",
+ "tizen-armel"
+ ]
+ },
+ "tizen.4.0.0-armel-corert": {
+ "#import": [
+ "tizen.4.0.0-corert",
+ "tizen.4.0.0-armel",
+ "tizen.4.0.0",
+ "tizen-armel-corert"
+ ]
+ },
+ "tizen.4.0.0-corert": {
+ "#import": [
+ "tizen.4.0.0",
+ "tizen-corert"
+ ]
+ },
+ "ubuntu": {
+ "#import": [
+ "debian"
+ ]
+ },
+ "ubuntu-arm": {
+ "#import": [
+ "ubuntu",
+ "debian-arm"
+ ]
+ },
+ "ubuntu-arm-corert": {
+ "#import": [
+ "ubuntu-corert",
+ "ubuntu-arm",
+ "debian-arm-corert"
+ ]
+ },
+ "ubuntu-arm64": {
+ "#import": [
+ "ubuntu",
+ "debian-arm64"
+ ]
+ },
+ "ubuntu-arm64-corert": {
+ "#import": [
+ "ubuntu-corert",
+ "ubuntu-arm64",
+ "debian-arm64-corert"
+ ]
+ },
+ "ubuntu-corert": {
+ "#import": [
+ "ubuntu",
+ "debian-corert"
+ ]
+ },
+ "ubuntu-x64": {
+ "#import": [
+ "ubuntu",
+ "debian-x64"
+ ]
+ },
+ "ubuntu-x64-corert": {
+ "#import": [
+ "ubuntu-corert",
+ "ubuntu-x64",
+ "debian-x64-corert"
+ ]
+ },
+ "ubuntu-x86": {
+ "#import": [
+ "ubuntu",
+ "debian-x86"
+ ]
+ },
+ "ubuntu-x86-corert": {
+ "#import": [
+ "ubuntu-corert",
+ "ubuntu-x86",
+ "debian-x86-corert"
+ ]
+ },
+ "ubuntu.14.04": {
+ "#import": [
+ "ubuntu"
+ ]
+ },
+ "ubuntu.14.04-arm": {
+ "#import": [
+ "ubuntu.14.04",
+ "ubuntu-arm"
+ ]
+ },
+ "ubuntu.14.04-arm-corert": {
+ "#import": [
+ "ubuntu.14.04-corert",
+ "ubuntu.14.04-arm",
+ "ubuntu.14.04",
+ "ubuntu-arm-corert"
+ ]
+ },
+ "ubuntu.14.04-corert": {
+ "#import": [
+ "ubuntu.14.04",
+ "ubuntu-corert"
+ ]
+ },
+ "ubuntu.14.04-x64": {
+ "#import": [
+ "ubuntu.14.04",
+ "ubuntu-x64"
+ ]
+ },
+ "ubuntu.14.04-x64-corert": {
+ "#import": [
+ "ubuntu.14.04-corert",
+ "ubuntu.14.04-x64",
+ "ubuntu.14.04",
+ "ubuntu-x64-corert"
+ ]
+ },
+ "ubuntu.14.04-x86": {
+ "#import": [
+ "ubuntu.14.04",
+ "ubuntu-x86"
+ ]
+ },
+ "ubuntu.14.04-x86-corert": {
+ "#import": [
+ "ubuntu.14.04-corert",
+ "ubuntu.14.04-x86",
+ "ubuntu.14.04",
+ "ubuntu-x86-corert"
+ ]
+ },
+ "ubuntu.14.10": {
+ "#import": [
+ "ubuntu"
+ ]
+ },
+ "ubuntu.14.10-arm": {
+ "#import": [
+ "ubuntu.14.10",
+ "ubuntu-arm"
+ ]
+ },
+ "ubuntu.14.10-arm-corert": {
+ "#import": [
+ "ubuntu.14.10-corert",
+ "ubuntu.14.10-arm",
+ "ubuntu.14.10",
+ "ubuntu-arm-corert"
+ ]
+ },
+ "ubuntu.14.10-corert": {
+ "#import": [
+ "ubuntu.14.10",
+ "ubuntu-corert"
+ ]
+ },
+ "ubuntu.14.10-x64": {
+ "#import": [
+ "ubuntu.14.10",
+ "ubuntu-x64"
+ ]
+ },
+ "ubuntu.14.10-x64-corert": {
+ "#import": [
+ "ubuntu.14.10-corert",
+ "ubuntu.14.10-x64",
+ "ubuntu.14.10",
+ "ubuntu-x64-corert"
+ ]
+ },
+ "ubuntu.14.10-x86": {
+ "#import": [
+ "ubuntu.14.10",
+ "ubuntu-x86"
+ ]
+ },
+ "ubuntu.14.10-x86-corert": {
+ "#import": [
+ "ubuntu.14.10-corert",
+ "ubuntu.14.10-x86",
+ "ubuntu.14.10",
+ "ubuntu-x86-corert"
+ ]
+ },
+ "ubuntu.15.04": {
+ "#import": [
+ "ubuntu"
+ ]
+ },
+ "ubuntu.15.04-arm": {
+ "#import": [
+ "ubuntu.15.04",
+ "ubuntu-arm"
+ ]
+ },
+ "ubuntu.15.04-arm-corert": {
+ "#import": [
+ "ubuntu.15.04-corert",
+ "ubuntu.15.04-arm",
+ "ubuntu.15.04",
+ "ubuntu-arm-corert"
+ ]
+ },
+ "ubuntu.15.04-corert": {
+ "#import": [
+ "ubuntu.15.04",
+ "ubuntu-corert"
+ ]
+ },
+ "ubuntu.15.04-x64": {
+ "#import": [
+ "ubuntu.15.04",
+ "ubuntu-x64"
+ ]
+ },
+ "ubuntu.15.04-x64-corert": {
+ "#import": [
+ "ubuntu.15.04-corert",
+ "ubuntu.15.04-x64",
+ "ubuntu.15.04",
+ "ubuntu-x64-corert"
+ ]
+ },
+ "ubuntu.15.04-x86": {
+ "#import": [
+ "ubuntu.15.04",
+ "ubuntu-x86"
+ ]
+ },
+ "ubuntu.15.04-x86-corert": {
+ "#import": [
+ "ubuntu.15.04-corert",
+ "ubuntu.15.04-x86",
+ "ubuntu.15.04",
+ "ubuntu-x86-corert"
+ ]
+ },
+ "ubuntu.15.10": {
+ "#import": [
+ "ubuntu"
+ ]
+ },
+ "ubuntu.15.10-arm": {
+ "#import": [
+ "ubuntu.15.10",
+ "ubuntu-arm"
+ ]
+ },
+ "ubuntu.15.10-arm-corert": {
+ "#import": [
+ "ubuntu.15.10-corert",
+ "ubuntu.15.10-arm",
+ "ubuntu.15.10",
+ "ubuntu-arm-corert"
+ ]
+ },
+ "ubuntu.15.10-corert": {
+ "#import": [
+ "ubuntu.15.10",
+ "ubuntu-corert"
+ ]
+ },
+ "ubuntu.15.10-x64": {
+ "#import": [
+ "ubuntu.15.10",
+ "ubuntu-x64"
+ ]
+ },
+ "ubuntu.15.10-x64-corert": {
+ "#import": [
+ "ubuntu.15.10-corert",
+ "ubuntu.15.10-x64",
+ "ubuntu.15.10",
+ "ubuntu-x64-corert"
+ ]
+ },
+ "ubuntu.15.10-x86": {
+ "#import": [
+ "ubuntu.15.10",
+ "ubuntu-x86"
+ ]
+ },
+ "ubuntu.15.10-x86-corert": {
+ "#import": [
+ "ubuntu.15.10-corert",
+ "ubuntu.15.10-x86",
+ "ubuntu.15.10",
+ "ubuntu-x86-corert"
+ ]
+ },
+ "ubuntu.16.04": {
+ "#import": [
+ "ubuntu"
+ ]
+ },
+ "ubuntu.16.04-arm": {
+ "#import": [
+ "ubuntu.16.04",
+ "ubuntu-arm"
+ ]
+ },
+ "ubuntu.16.04-arm-corert": {
+ "#import": [
+ "ubuntu.16.04-corert",
+ "ubuntu.16.04-arm",
+ "ubuntu.16.04",
+ "ubuntu-arm-corert"
+ ]
+ },
+ "ubuntu.16.04-arm64": {
+ "#import": [
+ "ubuntu.16.04",
+ "ubuntu-arm64"
+ ]
+ },
+ "ubuntu.16.04-arm64-corert": {
+ "#import": [
+ "ubuntu.16.04-corert",
+ "ubuntu.16.04-arm64",
+ "ubuntu.16.04",
+ "ubuntu-arm64-corert"
+ ]
+ },
+ "ubuntu.16.04-corert": {
+ "#import": [
+ "ubuntu.16.04",
+ "ubuntu-corert"
+ ]
+ },
+ "ubuntu.16.04-x64": {
+ "#import": [
+ "ubuntu.16.04",
+ "ubuntu-x64"
+ ]
+ },
+ "ubuntu.16.04-x64-corert": {
+ "#import": [
+ "ubuntu.16.04-corert",
+ "ubuntu.16.04-x64",
+ "ubuntu.16.04",
+ "ubuntu-x64-corert"
+ ]
+ },
+ "ubuntu.16.04-x86": {
+ "#import": [
+ "ubuntu.16.04",
+ "ubuntu-x86"
+ ]
+ },
+ "ubuntu.16.04-x86-corert": {
+ "#import": [
+ "ubuntu.16.04-corert",
+ "ubuntu.16.04-x86",
+ "ubuntu.16.04",
+ "ubuntu-x86-corert"
+ ]
+ },
+ "ubuntu.16.10": {
+ "#import": [
+ "ubuntu"
+ ]
+ },
+ "ubuntu.16.10-arm": {
+ "#import": [
+ "ubuntu.16.10",
+ "ubuntu-arm"
+ ]
+ },
+ "ubuntu.16.10-arm-corert": {
+ "#import": [
+ "ubuntu.16.10-corert",
+ "ubuntu.16.10-arm",
+ "ubuntu.16.10",
+ "ubuntu-arm-corert"
+ ]
+ },
+ "ubuntu.16.10-arm64": {
+ "#import": [
+ "ubuntu.16.10",
+ "ubuntu-arm64"
+ ]
+ },
+ "ubuntu.16.10-arm64-corert": {
+ "#import": [
+ "ubuntu.16.10-corert",
+ "ubuntu.16.10-arm64",
+ "ubuntu.16.10",
+ "ubuntu-arm64-corert"
+ ]
+ },
+ "ubuntu.16.10-corert": {
+ "#import": [
+ "ubuntu.16.10",
+ "ubuntu-corert"
+ ]
+ },
+ "ubuntu.16.10-x64": {
+ "#import": [
+ "ubuntu.16.10",
+ "ubuntu-x64"
+ ]
+ },
+ "ubuntu.16.10-x64-corert": {
+ "#import": [
+ "ubuntu.16.10-corert",
+ "ubuntu.16.10-x64",
+ "ubuntu.16.10",
+ "ubuntu-x64-corert"
+ ]
+ },
+ "ubuntu.16.10-x86": {
+ "#import": [
+ "ubuntu.16.10",
+ "ubuntu-x86"
+ ]
+ },
+ "ubuntu.16.10-x86-corert": {
+ "#import": [
+ "ubuntu.16.10-corert",
+ "ubuntu.16.10-x86",
+ "ubuntu.16.10",
+ "ubuntu-x86-corert"
+ ]
+ },
+ "ubuntu.17.04": {
+ "#import": [
+ "ubuntu"
+ ]
+ },
+ "ubuntu.17.04-arm": {
+ "#import": [
+ "ubuntu.17.04",
+ "ubuntu-arm"
+ ]
+ },
+ "ubuntu.17.04-arm-corert": {
+ "#import": [
+ "ubuntu.17.04-corert",
+ "ubuntu.17.04-arm",
+ "ubuntu.17.04",
+ "ubuntu-arm-corert"
+ ]
+ },
+ "ubuntu.17.04-arm64": {
+ "#import": [
+ "ubuntu.17.04",
+ "ubuntu-arm64"
+ ]
+ },
+ "ubuntu.17.04-arm64-corert": {
+ "#import": [
+ "ubuntu.17.04-corert",
+ "ubuntu.17.04-arm64",
+ "ubuntu.17.04",
+ "ubuntu-arm64-corert"
+ ]
+ },
+ "ubuntu.17.04-corert": {
+ "#import": [
+ "ubuntu.17.04",
+ "ubuntu-corert"
+ ]
+ },
+ "ubuntu.17.04-x64": {
+ "#import": [
+ "ubuntu.17.04",
+ "ubuntu-x64"
+ ]
+ },
+ "ubuntu.17.04-x64-corert": {
+ "#import": [
+ "ubuntu.17.04-corert",
+ "ubuntu.17.04-x64",
+ "ubuntu.17.04",
+ "ubuntu-x64-corert"
+ ]
+ },
+ "ubuntu.17.04-x86": {
+ "#import": [
+ "ubuntu.17.04",
+ "ubuntu-x86"
+ ]
+ },
+ "ubuntu.17.04-x86-corert": {
+ "#import": [
+ "ubuntu.17.04-corert",
+ "ubuntu.17.04-x86",
+ "ubuntu.17.04",
+ "ubuntu-x86-corert"
+ ]
+ },
+ "ubuntu.17.10": {
+ "#import": [
+ "ubuntu"
+ ]
+ },
+ "ubuntu.17.10-arm": {
+ "#import": [
+ "ubuntu.17.10",
+ "ubuntu-arm"
+ ]
+ },
+ "ubuntu.17.10-arm-corert": {
+ "#import": [
+ "ubuntu.17.10-corert",
+ "ubuntu.17.10-arm",
+ "ubuntu.17.10",
+ "ubuntu-arm-corert"
+ ]
+ },
+ "ubuntu.17.10-arm64": {
+ "#import": [
+ "ubuntu.17.10",
+ "ubuntu-arm64"
+ ]
+ },
+ "ubuntu.17.10-arm64-corert": {
+ "#import": [
+ "ubuntu.17.10-corert",
+ "ubuntu.17.10-arm64",
+ "ubuntu.17.10",
+ "ubuntu-arm64-corert"
+ ]
+ },
+ "ubuntu.17.10-corert": {
+ "#import": [
+ "ubuntu.17.10",
+ "ubuntu-corert"
+ ]
+ },
+ "ubuntu.17.10-x64": {
+ "#import": [
+ "ubuntu.17.10",
+ "ubuntu-x64"
+ ]
+ },
+ "ubuntu.17.10-x64-corert": {
+ "#import": [
+ "ubuntu.17.10-corert",
+ "ubuntu.17.10-x64",
+ "ubuntu.17.10",
+ "ubuntu-x64-corert"
+ ]
+ },
+ "ubuntu.17.10-x86": {
+ "#import": [
+ "ubuntu.17.10",
+ "ubuntu-x86"
+ ]
+ },
+ "ubuntu.17.10-x86-corert": {
+ "#import": [
+ "ubuntu.17.10-corert",
+ "ubuntu.17.10-x86",
+ "ubuntu.17.10",
+ "ubuntu-x86-corert"
+ ]
+ },
+ "ubuntu.18.04": {
+ "#import": [
+ "ubuntu"
+ ]
+ },
+ "ubuntu.18.04-arm": {
+ "#import": [
+ "ubuntu.18.04",
+ "ubuntu-arm"
+ ]
+ },
+ "ubuntu.18.04-arm-corert": {
+ "#import": [
+ "ubuntu.18.04-corert",
+ "ubuntu.18.04-arm",
+ "ubuntu.18.04",
+ "ubuntu-arm-corert"
+ ]
+ },
+ "ubuntu.18.04-arm64": {
+ "#import": [
+ "ubuntu.18.04",
+ "ubuntu-arm64"
+ ]
+ },
+ "ubuntu.18.04-arm64-corert": {
+ "#import": [
+ "ubuntu.18.04-corert",
+ "ubuntu.18.04-arm64",
+ "ubuntu.18.04",
+ "ubuntu-arm64-corert"
+ ]
+ },
+ "ubuntu.18.04-corert": {
+ "#import": [
+ "ubuntu.18.04",
+ "ubuntu-corert"
+ ]
+ },
+ "ubuntu.18.04-x64": {
+ "#import": [
+ "ubuntu.18.04",
+ "ubuntu-x64"
+ ]
+ },
+ "ubuntu.18.04-x64-corert": {
+ "#import": [
+ "ubuntu.18.04-corert",
+ "ubuntu.18.04-x64",
+ "ubuntu.18.04",
+ "ubuntu-x64-corert"
+ ]
+ },
+ "ubuntu.18.04-x86": {
+ "#import": [
+ "ubuntu.18.04",
+ "ubuntu-x86"
+ ]
+ },
+ "ubuntu.18.04-x86-corert": {
+ "#import": [
+ "ubuntu.18.04-corert",
+ "ubuntu.18.04-x86",
+ "ubuntu.18.04",
+ "ubuntu-x86-corert"
+ ]
+ },
+ "unix": {
+ "#import": [
+ "any"
+ ]
+ },
+ "unix-arm": {
+ "#import": [
+ "unix"
+ ]
+ },
+ "unix-arm-corert": {
+ "#import": [
+ "unix-corert",
+ "unix-arm"
+ ]
+ },
+ "unix-arm64": {
+ "#import": [
+ "unix"
+ ]
+ },
+ "unix-arm64-corert": {
+ "#import": [
+ "unix-corert",
+ "unix-arm64"
+ ]
+ },
+ "unix-armel": {
+ "#import": [
+ "unix"
+ ]
+ },
+ "unix-armel-corert": {
+ "#import": [
+ "unix-corert",
+ "unix-armel"
+ ]
+ },
+ "unix-corert": {
+ "#import": [
+ "unix",
+ "corert"
+ ]
+ },
+ "unix-x64": {
+ "#import": [
+ "unix"
+ ]
+ },
+ "unix-x64-corert": {
+ "#import": [
+ "unix-corert",
+ "unix-x64"
+ ]
+ },
+ "unix-x86": {
+ "#import": [
+ "unix"
+ ]
+ },
+ "unix-x86-corert": {
+ "#import": [
+ "unix-corert",
+ "unix-x86"
+ ]
+ },
+ "win": {
+ "#import": [
+ "any"
+ ]
+ },
+ "win-aot": {
+ "#import": [
+ "win",
+ "aot"
+ ]
+ },
+ "win-arm": {
+ "#import": [
+ "win"
+ ]
+ },
+ "win-arm-aot": {
+ "#import": [
+ "win-aot",
+ "win-arm"
+ ]
+ },
+ "win-arm-corert": {
+ "#import": [
+ "win-corert",
+ "win-arm"
+ ]
+ },
+ "win-arm64": {
+ "#import": [
+ "win"
+ ]
+ },
+ "win-arm64-aot": {
+ "#import": [
+ "win-aot",
+ "win-arm64"
+ ]
+ },
+ "win-arm64-corert": {
+ "#import": [
+ "win-corert",
+ "win-arm64"
+ ]
+ },
+ "win-corert": {
+ "#import": [
+ "win",
+ "corert"
+ ]
+ },
+ "win-x64": {
+ "#import": [
+ "win"
+ ]
+ },
+ "win-x64-aot": {
+ "#import": [
+ "win-aot",
+ "win-x64"
+ ]
+ },
+ "win-x64-corert": {
+ "#import": [
+ "win-corert",
+ "win-x64"
+ ]
+ },
+ "win-x86": {
+ "#import": [
+ "win"
+ ]
+ },
+ "win-x86-aot": {
+ "#import": [
+ "win-aot",
+ "win-x86"
+ ]
+ },
+ "win-x86-corert": {
+ "#import": [
+ "win-corert",
+ "win-x86"
+ ]
+ },
+ "win10": {
+ "#import": [
+ "win81"
+ ]
+ },
+ "win10-aot": {
+ "#import": [
+ "win10",
+ "win81-aot"
+ ]
+ },
+ "win10-arm": {
+ "#import": [
+ "win10",
+ "win81-arm"
+ ]
+ },
+ "win10-arm-aot": {
+ "#import": [
+ "win10-aot",
+ "win10-arm",
+ "win10",
+ "win81-arm-aot"
+ ]
+ },
+ "win10-arm-corert": {
+ "#import": [
+ "win10-corert",
+ "win10-arm",
+ "win10",
+ "win81-arm-corert"
+ ]
+ },
+ "win10-arm64": {
+ "#import": [
+ "win10",
+ "win81-arm64"
+ ]
+ },
+ "win10-arm64-aot": {
+ "#import": [
+ "win10-aot",
+ "win10-arm64",
+ "win10",
+ "win81-arm64-aot"
+ ]
+ },
+ "win10-arm64-corert": {
+ "#import": [
+ "win10-corert",
+ "win10-arm64",
+ "win10",
+ "win81-arm64-corert"
+ ]
+ },
+ "win10-corert": {
+ "#import": [
+ "win10",
+ "win81-corert"
+ ]
+ },
+ "win10-x64": {
+ "#import": [
+ "win10",
+ "win81-x64"
+ ]
+ },
+ "win10-x64-aot": {
+ "#import": [
+ "win10-aot",
+ "win10-x64",
+ "win10",
+ "win81-x64-aot"
+ ]
+ },
+ "win10-x64-corert": {
+ "#import": [
+ "win10-corert",
+ "win10-x64",
+ "win10",
+ "win81-x64-corert"
+ ]
+ },
+ "win10-x86": {
+ "#import": [
+ "win10",
+ "win81-x86"
+ ]
+ },
+ "win10-x86-aot": {
+ "#import": [
+ "win10-aot",
+ "win10-x86",
+ "win10",
+ "win81-x86-aot"
+ ]
+ },
+ "win10-x86-corert": {
+ "#import": [
+ "win10-corert",
+ "win10-x86",
+ "win10",
+ "win81-x86-corert"
+ ]
+ },
+ "win7": {
+ "#import": [
+ "win"
+ ]
+ },
+ "win7-aot": {
+ "#import": [
+ "win7",
+ "win-aot"
+ ]
+ },
+ "win7-arm": {
+ "#import": [
+ "win7",
+ "win-arm"
+ ]
+ },
+ "win7-arm-aot": {
+ "#import": [
+ "win7-aot",
+ "win7-arm",
+ "win7",
+ "win-arm-aot"
+ ]
+ },
+ "win7-arm-corert": {
+ "#import": [
+ "win7-corert",
+ "win7-arm",
+ "win7",
+ "win-arm-corert"
+ ]
+ },
+ "win7-arm64": {
+ "#import": [
+ "win7",
+ "win-arm64"
+ ]
+ },
+ "win7-arm64-aot": {
+ "#import": [
+ "win7-aot",
+ "win7-arm64",
+ "win7",
+ "win-arm64-aot"
+ ]
+ },
+ "win7-arm64-corert": {
+ "#import": [
+ "win7-corert",
+ "win7-arm64",
+ "win7",
+ "win-arm64-corert"
+ ]
+ },
+ "win7-corert": {
+ "#import": [
+ "win7",
+ "win-corert"
+ ]
+ },
+ "win7-x64": {
+ "#import": [
+ "win7",
+ "win-x64"
+ ]
+ },
+ "win7-x64-aot": {
+ "#import": [
+ "win7-aot",
+ "win7-x64",
+ "win7",
+ "win-x64-aot"
+ ]
+ },
+ "win7-x64-corert": {
+ "#import": [
+ "win7-corert",
+ "win7-x64",
+ "win7",
+ "win-x64-corert"
+ ]
+ },
+ "win7-x86": {
+ "#import": [
+ "win7",
+ "win-x86"
+ ]
+ },
+ "win7-x86-aot": {
+ "#import": [
+ "win7-aot",
+ "win7-x86",
+ "win7",
+ "win-x86-aot"
+ ]
+ },
+ "win7-x86-corert": {
+ "#import": [
+ "win7-corert",
+ "win7-x86",
+ "win7",
+ "win-x86-corert"
+ ]
+ },
+ "win8": {
+ "#import": [
+ "win7"
+ ]
+ },
+ "win8-aot": {
+ "#import": [
+ "win8",
+ "win7-aot"
+ ]
+ },
+ "win8-arm": {
+ "#import": [
+ "win8",
+ "win7-arm"
+ ]
+ },
+ "win8-arm-aot": {
+ "#import": [
+ "win8-aot",
+ "win8-arm",
+ "win8",
+ "win7-arm-aot"
+ ]
+ },
+ "win8-arm-corert": {
+ "#import": [
+ "win8-corert",
+ "win8-arm",
+ "win8",
+ "win7-arm-corert"
+ ]
+ },
+ "win8-arm64": {
+ "#import": [
+ "win8",
+ "win7-arm64"
+ ]
+ },
+ "win8-arm64-aot": {
+ "#import": [
+ "win8-aot",
+ "win8-arm64",
+ "win8",
+ "win7-arm64-aot"
+ ]
+ },
+ "win8-arm64-corert": {
+ "#import": [
+ "win8-corert",
+ "win8-arm64",
+ "win8",
+ "win7-arm64-corert"
+ ]
+ },
+ "win8-corert": {
+ "#import": [
+ "win8",
+ "win7-corert"
+ ]
+ },
+ "win8-x64": {
+ "#import": [
+ "win8",
+ "win7-x64"
+ ]
+ },
+ "win8-x64-aot": {
+ "#import": [
+ "win8-aot",
+ "win8-x64",
+ "win8",
+ "win7-x64-aot"
+ ]
+ },
+ "win8-x64-corert": {
+ "#import": [
+ "win8-corert",
+ "win8-x64",
+ "win8",
+ "win7-x64-corert"
+ ]
+ },
+ "win8-x86": {
+ "#import": [
+ "win8",
+ "win7-x86"
+ ]
+ },
+ "win8-x86-aot": {
+ "#import": [
+ "win8-aot",
+ "win8-x86",
+ "win8",
+ "win7-x86-aot"
+ ]
+ },
+ "win8-x86-corert": {
+ "#import": [
+ "win8-corert",
+ "win8-x86",
+ "win8",
+ "win7-x86-corert"
+ ]
+ },
+ "win81": {
+ "#import": [
+ "win8"
+ ]
+ },
+ "win81-aot": {
+ "#import": [
+ "win81",
+ "win8-aot"
+ ]
+ },
+ "win81-arm": {
+ "#import": [
+ "win81",
+ "win8-arm"
+ ]
+ },
+ "win81-arm-aot": {
+ "#import": [
+ "win81-aot",
+ "win81-arm",
+ "win81",
+ "win8-arm-aot"
+ ]
+ },
+ "win81-arm-corert": {
+ "#import": [
+ "win81-corert",
+ "win81-arm",
+ "win81",
+ "win8-arm-corert"
+ ]
+ },
+ "win81-arm64": {
+ "#import": [
+ "win81",
+ "win8-arm64"
+ ]
+ },
+ "win81-arm64-aot": {
+ "#import": [
+ "win81-aot",
+ "win81-arm64",
+ "win81",
+ "win8-arm64-aot"
+ ]
+ },
+ "win81-arm64-corert": {
+ "#import": [
+ "win81-corert",
+ "win81-arm64",
+ "win81",
+ "win8-arm64-corert"
+ ]
+ },
+ "win81-corert": {
+ "#import": [
+ "win81",
+ "win8-corert"
+ ]
+ },
+ "win81-x64": {
+ "#import": [
+ "win81",
+ "win8-x64"
+ ]
+ },
+ "win81-x64-aot": {
+ "#import": [
+ "win81-aot",
+ "win81-x64",
+ "win81",
+ "win8-x64-aot"
+ ]
+ },
+ "win81-x64-corert": {
+ "#import": [
+ "win81-corert",
+ "win81-x64",
+ "win81",
+ "win8-x64-corert"
+ ]
+ },
+ "win81-x86": {
+ "#import": [
+ "win81",
+ "win8-x86"
+ ]
+ },
+ "win81-x86-aot": {
+ "#import": [
+ "win81-aot",
+ "win81-x86",
+ "win81",
+ "win8-x86-aot"
+ ]
+ },
+ "win81-x86-corert": {
+ "#import": [
+ "win81-corert",
+ "win81-x86",
+ "win81",
+ "win8-x86-corert"
+ ]
+ }
+ }
+}
\ No newline at end of file
diff --git a/packages/System.Numerics.Vectors.4.4.0/useSharedDesignerContext.txt b/packages/Microsoft.NETCore.Platforms.2.1.0/useSharedDesignerContext.txt
similarity index 100%
rename from packages/System.Numerics.Vectors.4.4.0/useSharedDesignerContext.txt
rename to packages/Microsoft.NETCore.Platforms.2.1.0/useSharedDesignerContext.txt
diff --git a/packages/Microsoft.NETCore.Platforms.2.1.0/version.txt b/packages/Microsoft.NETCore.Platforms.2.1.0/version.txt
new file mode 100644
index 0000000000..47004a02b3
--- /dev/null
+++ b/packages/Microsoft.NETCore.Platforms.2.1.0/version.txt
@@ -0,0 +1 @@
+30ab651fcb4354552bd4891619a0bdd81e0ebdbf
diff --git a/packages/SimpleInjector.4.0.12/SimpleInjector.4.0.12.nupkg b/packages/SimpleInjector.4.0.12/SimpleInjector.4.0.12.nupkg
deleted file mode 100644
index 2975944f7b..0000000000
Binary files a/packages/SimpleInjector.4.0.12/SimpleInjector.4.0.12.nupkg and /dev/null differ
diff --git a/packages/SimpleInjector.4.0.12/lib/net40/SimpleInjector.dll b/packages/SimpleInjector.4.0.12/lib/net40/SimpleInjector.dll
deleted file mode 100644
index 5bae84d603..0000000000
Binary files a/packages/SimpleInjector.4.0.12/lib/net40/SimpleInjector.dll and /dev/null differ
diff --git a/packages/SimpleInjector.4.0.12/lib/net45/SimpleInjector.dll b/packages/SimpleInjector.4.0.12/lib/net45/SimpleInjector.dll
deleted file mode 100644
index 3b00d8c638..0000000000
Binary files a/packages/SimpleInjector.4.0.12/lib/net45/SimpleInjector.dll and /dev/null differ
diff --git a/packages/SimpleInjector.4.0.12/lib/netstandard1.0/SimpleInjector.dll b/packages/SimpleInjector.4.0.12/lib/netstandard1.0/SimpleInjector.dll
deleted file mode 100644
index e9da78b52f..0000000000
Binary files a/packages/SimpleInjector.4.0.12/lib/netstandard1.0/SimpleInjector.dll and /dev/null differ
diff --git a/packages/SimpleInjector.4.0.12/lib/netstandard1.3/SimpleInjector.dll b/packages/SimpleInjector.4.0.12/lib/netstandard1.3/SimpleInjector.dll
deleted file mode 100644
index cd3bf6529d..0000000000
Binary files a/packages/SimpleInjector.4.0.12/lib/netstandard1.3/SimpleInjector.dll and /dev/null differ
diff --git a/packages/SimpleInjector.4.3.0/SimpleInjector.4.3.0.nupkg b/packages/SimpleInjector.4.3.0/SimpleInjector.4.3.0.nupkg
new file mode 100644
index 0000000000..ab66e7f06b
Binary files /dev/null and b/packages/SimpleInjector.4.3.0/SimpleInjector.4.3.0.nupkg differ
diff --git a/packages/SimpleInjector.4.3.0/lib/net40/SimpleInjector.dll b/packages/SimpleInjector.4.3.0/lib/net40/SimpleInjector.dll
new file mode 100644
index 0000000000..5436d367b7
Binary files /dev/null and b/packages/SimpleInjector.4.3.0/lib/net40/SimpleInjector.dll differ
diff --git a/packages/SimpleInjector.4.0.12/lib/net40/SimpleInjector.xml b/packages/SimpleInjector.4.3.0/lib/net40/SimpleInjector.xml
similarity index 82%
rename from packages/SimpleInjector.4.0.12/lib/net40/SimpleInjector.xml
rename to packages/SimpleInjector.4.3.0/lib/net40/SimpleInjector.xml
index d22340923d..809362ed3f 100644
--- a/packages/SimpleInjector.4.0.12/lib/net40/SimpleInjector.xml
+++ b/packages/SimpleInjector.4.3.0/lib/net40/SimpleInjector.xml
@@ -53,637 +53,1234 @@
The class name is null or hresult is zero (0).
-
+
- The container. Create an instance of this type for registration of dependencies.
+ Extension methods for enable advanced scenarios.
-
-
- Thread-safety:
- Resolving instances can be done safely from multiple threads concurrently, but registration needs to
- be done from one single thread.
-
-
- It is therefore safe to call , ,
- GetService, and
- and anything related to resolving instances from multiple thread
- concurrently. It is however unsafe to call
- RegisterXXX,
- , , ,
- or anything related to registering from multiple threads concurrently.
-
-
- Common Container methods specific for the full .NET version of Simple Injector.
- Methods for batch registration.
- Methods for registration of collections.
- Methods for conditional registrations.
-
- These conditional registration methods lack a Func{PredicateContext, TService} predicate
- method. This is deliberate, because would force the factory to be registered as transient, forcing
- the whole parent structure to become transient as well. Besides this, it would blind the diagnostic
- system, because it will stop at the delegate, instead of being able to analyze the object graph as
- a whole.
-
- Methods for registration.
- Methods for registration of decorators.
- Methods for resolving instances.
- Methods for verifying the container.
-
-
- Initializes a new instance of the class.
-
-
- Gets the container options.
- The instance for this container.
-
+
- Gets a value indicating whether the container is currently being verified on the current thread.
+ Determines whether the specified container is locked making any new registrations. The container
+ is automatically locked when GetInstance is called for the
+ first time.
- True in case the container is currently being verified on the current thread; otherwise
- false.
+ The container.
+
+ true if the specified container is locked; otherwise, false.
+
+ Thrown when is null.
-
-
- Gets the intermediate lifestyle that forwards CreateRegistration calls to the lifestyle that is
- returned from the registered container.Options.LifestyleSelectionBehavior.
-
+
+ Determines whether the specified container is currently verifying its configuration.
+ The container.
+ true if the specified container is verifying; otherwise, false.
+ Thrown when is null.
-
+
- Returns an array with the current registrations. This list contains all explicitly registered
- types, and all implicitly registered instances. Implicit registrations are all concrete
- unregistered types that have been requested, all types that have been resolved using
- unregistered type resolution (using the event), and
- requested unregistered collections. Note that the result of this method may change over time,
- because of these implicit registrations.
+ Retrieves an item from the container stored by the given or null when no
+ item is stored by that key.
-
- This method has a performance characteristic of O(n). Prevent from calling this in a performance
- critical path of the application.
-
-
- Note: This method is not guaranteed to always return the same
- instance for a given registration. It will however either
- always return a producer that is able to return the expected instance. Because of this, do not
- compare sets of instances returned by different calls to
- by reference. The way of comparing lists is by the actual type. The type of each instance is
- guaranteed to be unique in the returned list.
-
+ Thread-safety: Calls to this method are thread-safe, but users should take proper
+ percussions when they call both GetItem and .
- An array of instances.
+ The container.
+ The key of the item to retrieve.
+ The stored item or null (Nothing in VB).
+ Thrown when one of the supplied arguments is a null
+ reference (Nothing in VB).
-
+
- Returns an array with the current registrations for root objects. Root objects are registrations
- that are in the root of the object graph, meaning that no other registration is depending on it.
+ Stores an item by the given in the container.
-
- This method has a performance characteristic of O(n). Prevent from calling this in a performance
- critical path of the application.
-
-
- This list contains the root objects of all explicitly registered types, and all implicitly
- registered instances. Implicit registrations are all concrete unregistered types that have been
- requested, all types that have been resolved using unregistered type resolution (using the
- event), and requested unregistered collections. Note that
- the result of this method may change over time, because of these implicit registrations.
-
-
- Note: This method is not guaranteed to always return the same
- instance for a given registration. It will however either
- always return a producer that is able to return the expected instance. Because of this, do not
- compare sets of instances returned by different calls to
- by reference. The way of comparing lists is by the actual type. The type of each instance is
- guaranteed to be unique in the returned list.
-
+ Thread-safety: Calls to this method are thread-safe, but users should take proper
+ percussions when they call both and SetItem.
- An array of instances.
- Thrown when this method is called before
- has been successfully called.
-
-
- Determines whether the specified System.Object is equal to the current System.Object.
-
- The System.Object to compare with the current System.Object.
-
- True if the specified System.Object is equal to the current System.Object; otherwise, false.
-
-
-
- Returns the hash code of the current instance.
- The hash code of the current instance.
+ The container.
+ The key of the item to insert or override.
+ The actual item. May be null.
+ Thrown when either or
+ is a null reference (Nothing in VB).
-
+
- Returns a that represents the .
+ Adds an item by the given in the container by using the specified function,
+ if the key does not already exist. This operation is atomic.
-
- A that represents the .
-
-
-
- Gets the of the current instance.
- The instance that represents the exact runtime
- type of the current instance.
-
-
- Releases all instances that are cached by the object.
-
-
- Prevents any new registrations to be made to the container.
-
-
- Releases all instances that are cached by the object.
- True for a normal dispose operation; false to finalize the handle.
+ The Type of the item to create.
+ The container.
+ The key of the item to insert or override.
+ The function used to generate a value for the given key. The supplied
+ value of will be supplied to the function when called.
+ The stored item or the item from the .
+ Thrown when either ,
+ or is a null reference (Nothing in VB).
-
+
- Registers all concrete, non-generic, public and internal types in the given set of
- that implement the given
- with container's default lifestyle (which is transient by default).
- Decorators and
- generic type definitions
- will be excluded from registration, while
- composites are included.
+ Allows appending new registrations to existing registrations made using one of the
+ Collections.Register overloads.
- The definition of the open generic type.
- A list of assemblies that will be searched.
- Thrown when one of the arguments contain a null
+ The container.
+ The service type of the collection.
+ The registration to append.
+ Thrown when one of the supplied arguments is a null
reference (Nothing in VB).
- Thrown when is not
- an open generic type.
- Thrown when the given set of
- contain multiple types that implement the same
- closed generic version of the given .
+ Thrown when the is not a
+ reference type, is open generic, or ambiguous.
+ Thrown when the container is locked.
+ Thrown when the method is called for a registration
+ that is made with one of the Collections.Register overloads that accepts a dynamic collection
+ (an IEnumerable or IEnumerable<TService>).
-
+
- Registers all concrete, non-generic, public and internal types in the given set of
- that implement the given
- with the supplied .
- Decorators and
- generic type definitions
- will be excluded from registration, while
- composites are included.
+ Allows appending new registrations to existing registrations made using one of the
+ Collections.Register overloads.
- The definition of the open generic type.
- A list of assemblies that will be searched.
- The lifestyle to register instances with.
- Thrown when one of the arguments contain a null
+ The container.
+ The service type of the collection.
+ The implementation type to append.
+ Thrown when one of the supplied arguments is a null
reference (Nothing in VB).
- Thrown when is not
- an open generic type.
- Thrown when the given set of
- contain multiple types that implement the same
- closed generic version of the given .
+ Thrown when the is not a
+ reference type, or ambiguous.
+ Thrown when the container is locked.
+ Thrown when the method is called for a registration
+ that is made with one of the Collections.Register overloads that accepts a dynamic collection
+ (an IEnumerable or IEnumerable<TService>).
-
+
+ Deprecation extensions.
+
+
- Registers all supplied based on the closed-generic version
- of the given with the transient lifestyle.
+ This interface method has been removed. Please call GetInstanceProducerFor instead.
- The definition of the open generic type.
- A list types to be registered.
- Thrown when one of the arguments contain a null
- reference (Nothing in VB).
- Thrown when is not
- an open generic type or when one of the supplied types from the
- collection does not derive from
- .
- Thrown when the given set of
- contain multiple types that implement the same
- closed generic version of the given .
+ The behavior.
+ The consumer.
+ Throws an exception.
-
+
- Registers all supplied based on the closed-generic version
- of the given with the given .
+ This interface method has been removed. Please call SelectProperty(PropertyInfo) instead.
- The definition of the open generic type.
- A list types to be registered.
- The lifestyle to register instances with.
- Thrown when one of the arguments contain a null
- reference (Nothing in VB).
- Thrown when is not
- an open generic type or when one of the supplied types from the
- collection does not derive from
- .
- Thrown when the given set of
- contain multiple types that implement the same
- closed generic version of the given .
+ The behavior.
+ Type of the abstraction that is requested.
+ The property to check.
+ True when the property should be injected.
-
+
- Registers all concrete, non-generic types (both public and internal) that are defined in the given
- set of and that implement the given
- with a default lifestyle and register them as a collection of .
- Unless overridden using a custom
- LifestyleSelectionBehavior, the
- default lifestyle is Transient.
+ Defines the container's behavior for finding a suitable constructor for the creation of a type.
+ Set the ConstructorResolutionBehavior
+ property of the container's property to change the default behavior
+ of the container.
- The element type of the collections to register. This can be either
- a non-generic, closed-generic or open-generic type.
- A list of assemblies that will be searched.
- Thrown when one of the supplied arguments contain a null
- reference (Nothing in VB).
-
+
- Registers all concrete, non-generic types (both public and internal) that are defined in the given
- set of and that implement the given
- with a default lifestyle and register them as a collection of .
- Unless overridden using a custom
- LifestyleSelectionBehavior, the
- default lifestyle is Transient.
- Composites,
- decorators and
- generic type definitions
- will be excluded from registration.
+ Gets the given 's constructor that can be used by the
+ container to create that instance.
- The element type of the collections to register. This can be either
- a non-generic, closed-generic or open-generic type.
- A list of assemblies that will be searched.
- Thrown when one of the supplied arguments contain a null
- reference (Nothing in VB).
+ Type of the implementation to find a suitable constructor for.
+
+ The . This method never returns null.
+
+ Thrown when no suitable constructor could be found.
-
+
- Registers all concrete, non-generic types (both public and internal) that are defined in the given
- set of and that implement the given
- with a default lifestyle and register them as a collection of .
- Unless overridden using a custom
- LifestyleSelectionBehavior, the
- default lifestyle is Transient.
- Composites,
- decorators and
- generic type definitions
- will be excluded from registration.
+ Defines the container's behavior for building an expression tree for an dependency to inject, based on
+ the information of the consuming type the dependency is injected into.
+ Set the ConstructorInjectionBehavior
+ property of the container's property to change the default behavior
+ of the container.
- The element type of the collections to register. This can be either
- a non-generic, closed-generic or open-generic type.
- A list of assemblies that will be searched.
- Thrown when one of the supplied arguments contain a null
- reference (Nothing in VB).
-
+
+ Verifies the specified .
+ Contextual information about the consumer where the built dependency is
+ injected into.
+
+ Thrown when the type of the target supplied with
+ the supplied cannot be used for auto wiring.
+ Thrown when the supplied argument is a null reference.
+
+
- Returns all concrete non-generic types that are located in the supplied
- and implement or inherit from the supplied .
- can be an open-generic type.
+ Gets the for the
+ Target of the supplied .
-
- Use this method when you need influence the types that are registered using
- Register.
- The Register overloads that take a collection of
- objects use this method internally to get the list of types that need to be registered. Instead of
- calling such overload, you can call an overload that takes a list of objects
- and pass in a filtered result from this GetTypesToRegister method.
- ).Assembly };
- var types = container.GetTypesToRegister(typeof(ICommandHandler<>), assemblies)
- .Where(type => !type.IsPublic);
-
- container.Register(typeof(ICommandHandler<>), types);
- ]]>
- This example calls the GetTypesToRegister method to request a list of concrete implementations
- of the ICommandHandler<T> interface from the assembly of that interface. After that
- all internal types are filtered out. This list is supplied to the
- Register(Type, IEnumerable<Type>)
- overload to finish the registration.
-
- The base type or interface to find derived types for. This can be both
- a non-generic and open-generic type.
- A list of assemblies that will be searched.
- A collection of types.
- Thrown when one of the arguments contain a null reference
- (Nothing in VB).
+ Contextual information about the consumer where the built dependency is
+ injected into.
+ The indication whether the method should return null or throw
+ an exception when the type is not registered.
+ An that describes the intend of creating that
+ Target. This method never returns null.
+ Thrown when the argument is a null reference.
-
+
- Returns all concrete types that are located in the supplied
- and implement or inherit from the supplied and match the specified
- . can be an open-generic type.
+ Defines the container's behavior for selecting the lifestyle for a registration in case no lifestyle
+ is explicitly supplied.
+ Set the LifestyleSelectionBehavior
+ property of the container's property to change the default behavior
+ of the container. By default, when no lifestyle is explicitly supplied, the
+ Transient lifestyle is used.
-
- Use this method when you need influence the types that are registered using
- Register.
- The Register overloads that take a collection of
- objects use this method internally to get the list of types that need to be registered. Instead of
- calling such overload, you can call an overload that takes a list of objects
- and pass in a filtered result from this GetTypesToRegister method.
- ).Assembly };
- var options = new TypesToRegisterOptions { IncludeGenericTypeDefinitions: true };
- var types = container.GetTypesToRegister(typeof(ICommandHandler<>), assemblies, options)
- .Where(type => !type.IsPublic);
-
- container.Register(typeof(ICommandHandler<>), types);
- ]]>
- This example calls the GetTypesToRegister method to request a list of concrete implementations
- of the ICommandHandler<T> interface from the assembly of that interface. After that
- all internal types are filtered out. This list is supplied to the
- Register(Type, IEnumerable<Type>)
- overload to finish the registration.
-
- The base type or interface to find derived types for. This can be both
- a non-generic and open-generic type.
- A list of assemblies that will be searched.
- The options.
- A collection of types.
- Thrown when one of the arguments contain a null reference
- (Nothing in VB).
-
+
+ Selects the lifestyle based on the supplied type information.
+ Type of the implementation to that is registered.
+ The suited for the given type.
+ Thrown when either one of the arguments is a null reference.
+
+
- Registers a dynamic (container uncontrolled) collection of elements of type
- . A call to will return the
- itself, and updates to the collection will be
- reflected in the result. If updates are allowed, make sure the collection can be iterated safely
- if you're running a multi-threaded application.
+ An instance of this type will be supplied to the
+ delegate that is that is supplied to the
+ RegisterResolveInterceptor
+ method that takes this delegate. This type contains contextual information about a resolved type and it
+ allows the user to examine the given instance to decide whether the
+ should be applied or not.
- The interface or base type that can be used to retrieve instances.
- The container-uncontrolled collection to register.
-
- Thrown when this container instance is locked and can not be altered, or when a
- for has already been registered.
-
- Thrown when is a null
- reference.
-
+
- Registers a collection of singleton elements of type .
+ Gets the that is responsible for the initialization of the created
+ instance.
- The interface or base type that can be used to retrieve instances.
- The collection to register.
-
- Thrown when this container instance is locked and can not be altered, or when a
- for has already been registered.
-
- Thrown when is a null
- reference.
- Thrown when one of the elements of
- is a null reference.
+ The or null (Nothing in VB) when the instance producer is
+ unknown.
-
+
- Registers a collection of , whose instances will be resolved lazily
- each time the resolved collection of is enumerated.
- The underlying collection is a stream that will return individual instances based on their
- specific registered lifestyle, for each call to .
- The order in which the types appear in the collection is the exact same order that the items were
- registered, i.e the resolved collection is deterministic.
+ Gets the that is responsible for the initialization of the created
+ instance.
- The base type or interface for elements in the collection.
- The collection of objects whose instances
- will be requested from the container.
- Thrown when is a null
- reference (Nothing in VB).
-
- Thrown when contains a null
- (Nothing in VB) element, a generic type definition, or the is
- not assignable from one of the given elements.
-
+ /// The .
-
+
- Registers a collection of , whose instances will be resolved lazily
- each time the resolved collection of is enumerated.
- The underlying collection is a stream that will return individual instances based on their
- specific registered lifestyle, for each call to .
- The order in which the types appear in the collection is the exact same order that the items were
- registered, i.e the resolved collection is deterministic.
+ An instance of this type will be supplied to the
+ delegate that is that is supplied to the
+ RegisterInitializer
+ overload that takes this delegate. This type contains contextual information about the creation and it
+ allows the user to examine the given instance to decide whether the instance should be initialized or
+ not.
- The base type or interface for elements in the collection.
- The collection of objects whose instances
- will be requested from the container.
- Thrown when one of the supplied arguments is a null
- reference (Nothing in VB).
-
- Thrown when contains a null
- (Nothing in VB) element or when is not assignable from any of the
- service types supplied by the given instances.
-
-
+
- Registers a collection of , whose instances will be resolved lazily
- each time the resolved collection of is enumerated.
- The underlying collection is a stream that will return individual instances based on their
- specific registered lifestyle, for each call to .
- The order in which the types appear in the collection is the exact same order that the items were
- registered, i.e the resolved collection is deterministic.
+ Gets a null reference. This property has been deprecated.
- The base type or interface for elements in the collection.
- The collection of objects whose instances
- will be requested from the container.
- Thrown when one of the supplied arguments is a null
- reference (Nothing in VB).
-
- Thrown when contains a null
- (Nothing in VB) element, a generic type definition, or the is
- not assignable from one of the given elements.
-
+ The null (Nothing in VB).
-
+
- Registers a collection of , whose instances will be resolved lazily
- each time the resolved collection of is enumerated.
- The underlying collection is a stream that will return individual instances based on their
- specific registered lifestyle, for each call to .
- The order in which the types appear in the collection is the exact same order that the items were
- registered, i.e the resolved collection is deterministic.
+ Gets the that is responsible for the initialization of the created
+ instance.
- The base type or interface for elements in the collection. This can be
- an a non-generic type, closed generic type or generic type definition.
- The collection of objects whose instances
- will be requested from the container.
- Thrown when one of the supplied arguments is a null
- reference (Nothing in VB).
-
- Thrown when contains a null
- (Nothing in VB) element or when is not assignable from any of the
- service types supplied by the given instances.
-
+ /// The .
-
+
- Registers a dynamic (container uncontrolled) collection of elements of type
- . A call to will return the
- itself, and updates to the collection will be
- reflected in the result. If updates are allowed, make sure the collection can be iterated safely
- if you're running a multi-threaded application.
+ Contains data that can be used to initialize a created instance. This data includes the actual
+ created and the information about the created instance.
- The base type or interface for elements in the collection.
- The collection of items to register.
- Thrown when one of the supplied arguments is a null
- reference (Nothing in VB).
- Thrown when represents an
- open generic type.
-
+
+ Initializes a new instance of the struct.
+ The that contains contextual information
+ about the created instance.
+ The created instance.
+
+
+ Gets the with contextual information about the
+ created instance.
+ The .
+
+
+ Gets the created instance.
+ The created instance.
+
+
+ Returns the hash code for this instance.
+ A 32-bit signed integer that is the hash code for this instance.
+
+
+ Indicates whether this instance and a specified object are equal.
+ Another object to compare to.
+ True if the current object is equal to the other parameter; otherwise, false.
+
+
- Conditionally registers that a new instance of will be
- returned every time a is requested (transient) and where the
- supplied returns true. The predicate will only be evaluated a finite
- number of times; the predicate is unsuited for making decisions based on runtime conditions.
+ Indicates whether the current object is equal to another object of the same type.
-
- This method uses the container's
- LifestyleSelectionBehavior to select
- the exact lifestyle for the specified type. By default this will be
- Transient.
-
- The interface or base type that can be used to retrieve the instances.
- The concrete type that will be registered.
- The predicate that determines whether the
- can be applied for the requested service type. This predicate
- can be used to build a fallback mechanism where multiple registrations for the same service type
- are made.
-
- Thrown when one of the arguments is a null reference (Nothing in VB).
-
-
- Thrown when this container instance is locked and can not be altered.
-
+ An object to compare with this object.
+ True if the current object is equal to the other parameter; otherwise, false.
-
+
- Conditionally registers that an instance of will be
- returned every time a is requested and where the supplied
- returns true. The instance is cached according to the supplied
- . The predicate will only be evaluated a finite number of times; the
- predicate is unsuited for making decisions based on runtime conditions.
+ Indicates whether the values of two specified objects are equal.
- The interface or base type that can be used to retrieve the instances.
- The concrete type that will be registered.
- The lifestyle that specifies how the returned instance will be cached.
- The predicate that determines whether the
- can be applied for the requested service type. This predicate
- can be used to build a fallback mechanism where multiple registrations for the same service type
- are made.
-
- Thrown when one of the arguments is a null reference (Nothing in VB).
-
-
- Thrown when this container instance is locked and can not be altered.
-
+ The first object to compare.
+ The second object to compare.
+ True if a and b are equal; otherwise, false.
-
+
- Conditionally registers that a new instance of will be
- returned every time a is requested (transient) and where the
- supplied returns true. The predicate will only be evaluated a finite
- number of times; the predicate is unsuited for making decisions based on runtime conditions.
+ Indicates whether the values of two specified objects are
+ not equal.
-
- This method uses the container's
- LifestyleSelectionBehavior to select
- the exact lifestyle for the specified type. By default this will be
- Transient.
-
- The base type or interface to register. This can be an open-generic type.
- The actual type that will be returned when requested.
- The predicate that determines whether the
- can be applied for the requested service type. This predicate
- can be used to build a fallback mechanism where multiple registrations for the same service type
- are made.
- Thrown when one of the arguments is a null reference
- (Nothing in VB).
-
- Thrown when this container instance is locked and can not be altered.
-
+ The first object to compare.
+ The second object to compare.
+ True if a and b are not equal; otherwise, false.
-
+
- Conditionally registers that an instance of will be
- returned every time a is requested and where the supplied
- returns true. The instance is cached according to the supplied
- . The predicate will only be evaluated a finite number of times; the
- predicate is unsuited for making decisions based on runtime conditions.
+ This is an internal type. Only depend on this type when you want to be absolutely sure a future
+ version of the framework will break your code.
- The base type or interface to register. This can be an open-generic type.
- The actual type that will be returned when requested.
- The lifestyle that defines how returned instances are cached.
- The predicate that determines whether the
- can be applied for the requested service type. This predicate
- can be used to build a fallback mechanism where multiple registrations for the same service type
- are made.
- Thrown when one of the arguments is a null reference
- (Nothing in VB).
- Thrown when and
- are not a generic type or when
- is a partially-closed generic type.
-
-
- Thrown when this container instance is locked and can not be altered.
-
-
+
+ Initializes a new instance of the struct.
+ The scope factory.
+ The container.
+
+
+ Gets the lazily initialized Scope of the current LazyScope instance.
+ The current Scope or null.
+
+
- Conditionally registers that an instance of the type returned from
- will be returned every time a
- is requested and where the supplied
- returns true. The instance is cached according to the supplied
- . Both the and
- will only be evaluated a finite number of times;
- they unsuited for making decisions based on runtime conditions.
+ This is an internal type. Only depend on this type when you want to be absolutely sure a future
+ version of the framework will break your code.
- The base type or interface to register. This can be an open-generic type.
- A factory that allows building Type objects that define the
- implementation type to inject, based on the given contextual information. The delegate is allowed
- to return (partially) open-generic types.
- The lifestyle that defines how returned instances are cached.
- The predicate that determines whether the registration can be applied for
- the requested service type. This predicate can be used to build a fallback mechanism where
- multiple registrations for the same service type are made.
- Thrown when one of the arguments is a null reference
- (Nothing in VB).
- Thrown when is a
- partially-closed generic type.
-
-
- Thrown when this container instance is locked and can not be altered.
-
+ Implementation type.
-
+
- Conditionally registers that will be used every time a
- is requested and where the supplied
- returns true. The predicate will only be evaluated a finite number of times; the predicate is
- unsuited for making decisions based on runtime conditions.
+ Initializes a new instance of the
+ struct.
+ The registration.
+
+
+ Gets the lazily initialized instance for the of the current LazyScopedRegistration.
+ The scope that is used to retrieve the instance.
+ The cached instance.
+
+
+
+ Defines the container's behavior for selecting properties to inject during the creation of a type.
+ Set the PropertySelectionBehavior
+ property of the container's property to change the default behavior
+ of the container. By default, no properties will be injected by the container.
- The base type or interface to register. This can be an open-generic type.
- The instance to register.
- The predicate that determines whether the
- can be applied for the requested service type. This predicate
- can be used to build a fallback mechanism where multiple registrations for the same service type
- are made.
- Thrown when one of the arguments is a null reference
- (Nothing in VB).
- Thrown when is open generic or
- is not assignable to .
-
- Thrown when this container instance is locked and can not be altered.
-
-
-
- Occurs when an instance of a type is requested that has not been registered explicitly, allowing
- resolution of unregistered types before the container tries to create the type.
-
-
-
- The event is called by the container every time an
- unregistered type is requested for the first time, allowing a developer to do unregistered type
- resolution. By calling the
+
+
+ Determines whether a property should be injected by the container upon creation of its type.
+
+
+ The type being created for which the property should be injected. Note that this might a
+ different type than the type on which the property is declared (which might be a base class).
+ The property to check.
+ True when the property should be injected.
+
+
+
+ A known relationship defines a relationship between two types. The Diagnostics Debug View uses this
+ information to spot possible misconfigurations.
+
+
+
+ Initializes a new instance of the class.
+ The implementation type of the parent type.
+ The lifestyle of the parent type.
+ The type that the parent depends on (it is injected into the parent).
+
+
+ Gets the implementation type of the parent type of the relationship.
+ The implementation type of the parent type of the relationship.
+
+
+ Gets the lifestyle of the parent type of the relationship.
+ The lifestyle of the parent type of the relationship.
+
+
+ Gets the type that the parent depends on (it is injected into the parent).
+ The type that the parent depends on.
+
+
+ Serves as a hash function for a particular type.
+ A hash code for the current .
+
+
+
+ Determines whether the specified is equal to the current
+ .
+
+ The object to compare with the current object.
+ True if the specified is equal to the current
+ ; otherwise, false.
+
+
+
+ The container. Create an instance of this type for registration of dependencies.
+
+
+
+ Thread-safety:
+ Resolving instances can be done safely from multiple threads concurrently, but registration needs to
+ be done from one single thread.
+
+
+ It is therefore safe to call , ,
+ GetService, and
+ and anything related to resolving instances from multiple thread
+ concurrently. It is however unsafe to call
+ RegisterXXX,
+ , , ,
+ or anything related to registering from multiple threads concurrently.
+
+
+ Common Container methods specific for the full .NET version of Simple Injector.
+ Methods for batch registration.
+ Methods for registration of collections.
+ Methods for conditional registrations.
+
+ These conditional registration methods lack a Func{PredicateContext, TService} predicate
+ method. This is deliberate, because would force the factory to be registered as transient, forcing
+ the whole parent structure to become transient as well. Besides this, it would blind the diagnostic
+ system, because it will stop at the delegate, instead of being able to analyze the object graph as
+ a whole.
+
+ Methods for registration.
+ Methods for registration of decorators.
+ Methods for resolving instances.
+ Methods for verifying the container.
+
+
+ Initializes a new instance of the class.
+
+
+ Gets the container options.
+ The instance for this container.
+
+
+
+ Gets a value indicating whether the container is currently being verified on the current thread.
+
+ True in case the container is currently being verified on the current thread; otherwise
+ false.
+
+
+
+ Gets the intermediate lifestyle that forwards CreateRegistration calls to the lifestyle that is
+ returned from the registered container.Options.LifestyleSelectionBehavior.
+
+
+
+
+ Returns an array with the current registrations. This list contains all explicitly registered
+ types, and all implicitly registered instances. Implicit registrations are all concrete
+ unregistered types that have been requested, all types that have been resolved using
+ unregistered type resolution (using the event), and
+ requested unregistered collections. Note that the result of this method may change over time,
+ because of these implicit registrations.
+
+
+
+ This method has a performance characteristic of O(n). Prevent from calling this in a performance
+ critical path of the application.
+
+
+ Note: This method is not guaranteed to always return the same
+ instance for a given registration. It will however either
+ always return a producer that is able to return the expected instance. Because of this, do not
+ compare sets of instances returned by different calls to
+ by reference. The way of comparing lists is by the actual type. The type of each instance is
+ guaranteed to be unique in the returned list.
+
+
+ An array of instances.
+
+
+
+ Returns an array with the current registrations for root objects. Root objects are registrations
+ that are in the root of the object graph, meaning that no other registration is depending on it.
+
+
+
+ This method has a performance characteristic of O(n). Prevent from calling this in a performance
+ critical path of the application.
+
+
+ This list contains the root objects of all explicitly registered types, and all implicitly
+ registered instances. Implicit registrations are all concrete unregistered types that have been
+ requested, all types that have been resolved using unregistered type resolution (using the
+ event), and requested unregistered collections. Note that
+ the result of this method may change over time, because of these implicit registrations.
+
+
+ Note: This method is not guaranteed to always return the same
+ instance for a given registration. It will however either
+ always return a producer that is able to return the expected instance. Because of this, do not
+ compare sets of instances returned by different calls to
+ by reference. The way of comparing lists is by the actual type. The type of each instance is
+ guaranteed to be unique in the returned list.
+
+
+ An array of instances.
+ Thrown when this method is called before
+ has been successfully called.
+
+
+ Determines whether the specified System.Object is equal to the current System.Object.
+
+ The System.Object to compare with the current System.Object.
+
+ True if the specified System.Object is equal to the current System.Object; otherwise, false.
+
+
+
+ Returns the hash code of the current instance.
+ The hash code of the current instance.
+
+
+
+ Returns a that represents the .
+
+
+ A that represents the .
+
+
+
+ Gets the of the current instance.
+ The instance that represents the exact runtime
+ type of the current instance.
+
+
+ Releases all instances that are cached by the object.
+
+
+ Prevents any new registrations to be made to the container.
+
+
+ Releases all instances that are cached by the object.
+ True for a normal dispose operation; false to finalize the handle.
+
+
+
+ Registers all concrete, non-generic, public and internal types in the given set of
+ that implement the given
+ with container's default lifestyle (which is transient by default).
+ Decorators and
+ generic type definitions
+ will be excluded from registration, while
+ composites are included.
+
+ The definition of the open generic type.
+ A list of assemblies that will be searched.
+ Thrown when one of the arguments contain a null
+ reference (Nothing in VB).
+ Thrown when is not
+ an open generic type.
+ Thrown when the given set of
+ contain multiple types that implement the same
+ closed generic version of the given .
+
+
+
+ Registers all concrete, non-generic, public and internal types in the given set of
+ that implement the given
+ with container's default lifestyle (which is transient by default).
+ Decorators and
+ generic type definitions
+ will be excluded from registration, while
+ composites are included.
+
+ The definition of the open generic type.
+ A list of assemblies that will be searched.
+ Thrown when one of the arguments contain a null
+ reference (Nothing in VB).
+ Thrown when is not
+ an open generic type.
+ Thrown when the given set of
+ contain multiple types that implement the same
+ closed generic version of the given .
+
+
+
+ Registers all concrete, non-generic, public and internal types in the given
+ that implement the given
+ with the supplied .
+ Decorators and
+ generic type definitions
+ will be excluded from registration, while
+ composites are included.
+
+ The definition of the open generic type.
+ An assembly that will be searched.
+ The lifestyle to register instances with.
+ Thrown when one of the arguments contain a null
+ reference (Nothing in VB).
+ Thrown when is not
+ an open generic type.
+ Thrown when the given
+ contain multiple types that implement the same
+ closed generic version of the given .
+
+
+
+ Registers all concrete, non-generic, public and internal types in the given set of
+ that implement the given
+ with the supplied .
+ Decorators and
+ generic type definitions
+ will be excluded from registration, while
+ composites are included.
+
+ The definition of the open generic type.
+ A list of assemblies that will be searched.
+ The lifestyle to register instances with.
+ Thrown when one of the arguments contain a null
+ reference (Nothing in VB).
+ Thrown when is not
+ an open generic type.
+ Thrown when the given set of
+ contain multiple types that implement the same
+ closed generic version of the given .
+
+
+
+ Registers all supplied based on the closed-generic version
+ of the given with the transient lifestyle.
+
+ The definition of the open generic type.
+ A list types to be registered.
+ Thrown when one of the arguments contain a null
+ reference (Nothing in VB).
+ Thrown when is not
+ an open generic type or when one of the supplied types from the
+ collection does not derive from
+ .
+ Thrown when the given set of
+ contain multiple types that implement the same
+ closed generic version of the given .
+
+
+
+ Registers all supplied based on the closed-generic version
+ of the given with the given .
+
+ The definition of the open generic type.
+ A list types to be registered.
+ The lifestyle to register instances with.
+ Thrown when one of the arguments contain a null
+ reference (Nothing in VB).
+ Thrown when is not
+ an open generic type or when one of the supplied types from the
+ collection does not derive from
+ .
+ Thrown when the given set of
+ contain multiple types that implement the same
+ closed generic version of the given .
+
+
+
+ Registers all concrete, non-generic, public and internal types in the given set of
+ that implement the given
+ with lifestyle.
+ Decorators and
+ generic type definitions
+ will be excluded from registration, while
+ composites are included.
+
+ The definition of the open generic type.
+ A list of assemblies that will be searched.
+ Thrown when one of the arguments contain a null
+ reference (Nothing in VB).
+ Thrown when is not
+ an open generic type.
+ Thrown when the given set of
+ contain multiple types that implement the same
+ closed generic version of the given .
+
+
+
+ Registers all concrete, non-generic, public and internal types in the given set of
+ that implement the given
+ with lifestyle.
+ Decorators and
+ generic type definitions
+ will be excluded from registration, while
+ composites are included.
+
+ The definition of the open generic type.
+ A list of assemblies that will be searched.
+ Thrown when one of the arguments contain a null
+ reference (Nothing in VB).
+ Thrown when is not
+ an open generic type.
+ Thrown when the given set of
+ contain multiple types that implement the same
+ closed generic version of the given .
+
+
+
+ Registers all concrete, non-generic types (both public and internal) that are defined in the given
+ set of and that implement the given
+ with a default lifestyle and register them as a collection of .
+ Unless overridden using a custom
+ LifestyleSelectionBehavior, the
+ default lifestyle is Transient.
+
+ The element type of the collections to register. This can be either
+ a non-generic, closed-generic or open-generic type.
+ A list of assemblies that will be searched.
+ Thrown when one of the supplied arguments contain a null
+ reference (Nothing in VB).
+
+
+
+ Registers all concrete, non-generic types (both public and internal) that are defined in the given
+ set of and that implement the given
+ with a default lifestyle and register them as a collection of .
+ Unless overridden using a custom
+ LifestyleSelectionBehavior, the
+ default lifestyle is Transient.
+ Composites,
+ decorators and
+ generic type definitions
+ will be excluded from registration.
+
+ The element type of the collections to register. This can be either
+ a non-generic, closed-generic or open-generic type.
+ A list of assemblies that will be searched.
+ Thrown when one of the supplied arguments contain a null
+ reference (Nothing in VB).
+
+
+
+ Registers all concrete, non-generic types (both public and internal) that are defined in the given
+ set of and that implement the given
+ with a default lifestyle and register them as a collection of .
+ Unless overridden using a custom
+ LifestyleSelectionBehavior, the
+ default lifestyle is Transient.
+ Composites,
+ decorators and
+ generic type definitions
+ will be excluded from registration.
+
+ The element type of the collections to register. This can be either
+ a non-generic, closed-generic or open-generic type.
+ A list of assemblies that will be searched.
+ Thrown when one of the supplied arguments contain a null
+ reference (Nothing in VB).
+
+
+
+ Returns all concrete non-generic types that are located in the supplied
+ and implement or inherit from the supplied .
+
+
+ Use this method when you need influence the types that are registered using
+ Container.Collections.Register.
+ The Collections.Register overloads that take a collection of
+ objects use this method internally to get the list of types that need to be registered. Instead of
+ calling such overload, you can call an overload that takes a list of objects
+ and pass in a filtered result from this GetTypesToRegister method.
+ assemblies = new[] { typeof(ILogger).Assembly };
+ var types = container.GetTypesToRegister(assemblies)
+ .Where(type => type.IsPublic);
+
+ container.Collections.Register(types);
+ ]]>
+ This example calls the GetTypesToRegister method to request a list of concrete implementations
+ of the ILogger interface from the assembly of that interface. After that
+ all internal types are filtered out. This list is supplied to the
+ Collections.Register<TService>(IEnumerable<Type>)
+ overload to finish the registration.
+
+ The base type or interface to find derived types for.
+ A list of assemblies that will be searched.
+ A collection of types.
+ Thrown when one of the arguments contain a null reference
+ (Nothing in VB).
+ A collection of types.
+
+
+
+ Returns all concrete non-generic types that are located in the supplied
+ and implement or inherit from the supplied .
+
+
+ Use this method when you need influence the types that are registered using
+ Container.Collections.Register.
+ The Collections.Register overloads that take a collection of
+ objects use this method internally to get the list of types that need to be registered. Instead of
+ calling such overload, you can call an overload that takes a list of objects
+ and pass in a filtered result from this GetTypesToRegister method.
+ (
+ typeof(ILogger).Assembly,
+ typeof(FileLogger).Assembly)
+ .Where(type => type.IsPublic);
+
+ container.Collections.Register(types);
+ ]]>
+ This example calls the GetTypesToRegister method to request a list of concrete implementations
+ of the ILogger interface from the assembly of that interface. After that
+ all internal types are filtered out. This list is supplied to the
+ Container.Collections.Register<TService>(IEnumerable<Type>)
+ overload to finish the registration.
+
+ The base type or interface to find derived types for.
+ A list of assemblies that will be searched.
+ A collection of types.
+ Thrown when one of the arguments contain a null reference
+ (Nothing in VB).
+ A collection of types.
+
+
+
+ Returns all concrete non-generic types that are located in the supplied
+ and implement or inherit from the supplied .
+ can be an open-generic type.
+
+
+ Use this method when you need influence the types that are registered using
+ Register or
+ Collections.Register.
+ The Register overloads that take a collection of
+ objects use this method internally to get the list of types that need to be registered. Instead of
+ calling such overload, you can call an overload that takes a list of objects
+ and pass in a filtered result from this GetTypesToRegister method.
+ ).Assembly };
+ var types = container.GetTypesToRegister(typeof(ICommandHandler<>), assemblies)
+ .Where(type => type.IsPublic);
+
+ container.Register(typeof(ICommandHandler<>), types);
+ ]]>
+ This example calls the GetTypesToRegister method to request a list of concrete implementations
+ of the ICommandHandler<T> interface from the assembly of that interface. After that
+ all internal types are filtered out. This list is supplied to the
+ Register(Type, IEnumerable<Type>)
+ overload to finish the registration.
+
+ The base type or interface to find derived types for. This can be both
+ a non-generic and open-generic type.
+ A list of assemblies that will be searched.
+ A collection of types.
+ Thrown when one of the arguments contain a null reference
+ (Nothing in VB).
+
+
+
+ Returns all concrete non-generic types that are located in the supplied
+ and implement or inherit from the supplied .
+ can be an open-generic type.
+
+
+ Use this method when you need influence the types that are registered using
+ Register or
+ Collections.Register.
+ The Register overloads that take a collection of
+ objects use this method internally to get the list of types that need to be registered. Instead of
+ calling such overload, you can call an overload that takes a list of objects
+ and pass in a filtered result from this GetTypesToRegister method.
+ ).Assembly };
+ var types = container.GetTypesToRegister(typeof(ICommandHandler<>), assemblies)
+ .Where(type => type.IsPublic);
+
+ container.Register(typeof(ICommandHandler<>), types);
+ ]]>
+ This example calls the GetTypesToRegister method to request a list of concrete implementations
+ of the ICommandHandler<T> interface from the assembly of that interface. After that
+ all internal types are filtered out. This list is supplied to the
+ Register(Type, IEnumerable<Type>)
+ overload to finish the registration.
+
+ The base type or interface to find derived types for. This can be both
+ a non-generic and open-generic type.
+ A list of assemblies that will be searched.
+ A collection of types.
+ Thrown when one of the arguments contain a null reference
+ (Nothing in VB).
+
+
+
+ Returns all concrete types that are located in the supplied
+ and implement or inherit from the supplied and match the specified
+ . can be an open-generic type.
+
+
+ Use this method when you need influence the types that are registered using
+ Register.
+ The Register overloads that take a collection of
+ objects use this method internally to get the list of types that need to be registered. Instead of
+ calling such overload, you can call an overload that takes a list of objects
+ and pass in a filtered result from this GetTypesToRegister method.
+ ).Assembly };
+ var options = new TypesToRegisterOptions { IncludeGenericTypeDefinitions: true };
+ var types = container.GetTypesToRegister(typeof(ICommandHandler<>), assemblies, options)
+ .Where(type => type.IsPublic);
+
+ container.Register(typeof(ICommandHandler<>), types);
+ ]]>
+ This example calls the GetTypesToRegister method to request a list of concrete implementations
+ of the ICommandHandler<T> interface from the assembly of that interface. After that
+ all internal types are filtered out. This list is supplied to the
+ Register(Type, IEnumerable<Type>)
+ overload to finish the registration.
+
+ The base type or interface to find derived types for. This can be both
+ a non-generic and open-generic type.
+ A list of assemblies that will be searched.
+ The options.
+ A collection of types.
+ Thrown when one of the arguments contain a null reference
+ (Nothing in VB).
+
+
+
+ Registers a dynamic (container uncontrolled) collection of elements of type
+ . A call to will return the
+ itself, and updates to the collection will be
+ reflected in the result. If updates are allowed, make sure the collection can be iterated safely
+ if you're running a multi-threaded application.
+
+ The interface or base type that can be used to retrieve instances.
+ The container-uncontrolled collection to register.
+
+ Thrown when this container instance is locked and can not be altered, or when a
+ for has already been registered.
+
+ Thrown when is a null
+ reference.
+
+
+
+ Registers a collection of singleton elements of type .
+
+ The interface or base type that can be used to retrieve instances.
+ The collection to register.
+
+ Thrown when this container instance is locked and can not be altered, or when a
+ for has already been registered.
+
+ Thrown when is a null
+ reference.
+ Thrown when one of the elements of
+ is a null reference.
+
+
+
+ Registers a collection of , whose instances will be resolved lazily
+ each time the resolved collection of is enumerated.
+ The underlying collection is a stream that will return individual instances based on their
+ specific registered lifestyle, for each call to .
+ The order in which the types appear in the collection is the exact same order that the items were
+ supplied to this method, i.e the resolved collection is deterministic.
+
+ The base type or interface for elements in the collection.
+ The collection of objects whose instances
+ will be requested from the container.
+ Thrown when is a null
+ reference (Nothing in VB).
+
+ Thrown when contains a null
+ (Nothing in VB) element, a generic type definition, or the is
+ not assignable from one of the given elements.
+
+
+
+
+ Registers a collection of , whose instances will be resolved lazily
+ each time the resolved collection of is enumerated.
+ The underlying collection is a stream that will return individual instances based on their
+ specific registered lifestyle, for each call to .
+ The order in which the types appear in the collection is the exact same order that the items were
+ supplied to this method, i.e the resolved collection is deterministic.
+
+ The base type or interface for elements in the collection.
+ The collection of objects whose instances
+ will be requested from the container.
+ Thrown when one of the supplied arguments is a null
+ reference (Nothing in VB).
+
+ Thrown when contains a null
+ (Nothing in VB) element or when is not assignable from any of the
+ service types supplied by the given instances.
+
+
+
+
+ Registers a collection of , whose instances will be resolved lazily
+ each time the resolved collection of is enumerated.
+ The underlying collection is a stream that will return individual instances based on their
+ specific registered lifestyle, for each call to .
+ The order in which the types appear in the collection is the exact same order that the items were
+ supplied to this method, i.e the resolved collection is deterministic.
+
+ The base type or interface for elements in the collection.
+ The collection of objects whose instances
+ will be requested from the container.
+ Thrown when one of the supplied arguments is a null
+ reference (Nothing in VB).
+
+ Thrown when contains a null
+ (Nothing in VB) element, a generic type definition, or the is
+ not assignable from one of the given elements.
+
+
+
+
+ Registers a collection of , whose instances will be resolved lazily
+ each time the resolved collection of is enumerated.
+ The underlying collection is a stream that will return individual instances based on their
+ specific registered lifestyle, for each call to .
+ The order in which the types appear in the collection is the exact same order that the items were
+ supplied to this method, i.e the resolved collection is deterministic.
+
+ The base type or interface for elements in the collection. This can be
+ an a non-generic type, closed generic type or generic type definition.
+ The collection of objects whose instances
+ will be requested from the container.
+ Thrown when one of the supplied arguments is a null
+ reference (Nothing in VB).
+
+ Thrown when contains a null
+ (Nothing in VB) element or when is not assignable from any of the
+ service types supplied by the given instances.
+
+
+
+
+ Registers a dynamic (container uncontrolled) collection of elements of type
+ . A call to will return the
+ itself, and updates to the collection will be
+ reflected in the result. If updates are allowed, make sure the collection can be iterated safely
+ if you're running a multi-threaded application.
+
+ The base type or interface for elements in the collection.
+ The collection of items to register.
+ Thrown when one of the supplied arguments is a null
+ reference (Nothing in VB).
+ Thrown when represents an
+ open generic type.
+
+
+
+ Conditionally registers that a new instance of will be
+ returned every time a is requested (transient) and where the
+ supplied returns true. The predicate will only be evaluated a finite
+ number of times; the predicate is unsuited for making decisions based on runtime conditions.
+
+
+ This method uses the container's
+ LifestyleSelectionBehavior to select
+ the exact lifestyle for the specified type. By default this will be
+ Transient.
+
+ The interface or base type that can be used to retrieve the instances.
+ The concrete type that will be registered.
+ The predicate that determines whether the
+ can be applied for the requested service type. This predicate
+ can be used to build a fallback mechanism where multiple registrations for the same service type
+ are made. Note that the predicate will be called a finite number of times and its result will be cached
+ for the lifetime of the container. It can't be used for selecting a type based on runtime conditions.
+
+
+ Thrown when one of the arguments is a null reference (Nothing in VB).
+
+
+ Thrown when this container instance is locked and can not be altered.
+
+
+
+
+ Conditionally registers that an instance of will be
+ returned every time a is requested and where the supplied
+ returns true. The instance is cached according to the supplied
+ . The predicate will only be evaluated a finite number of times; the
+ predicate is unsuited for making decisions based on runtime conditions.
+
+ The interface or base type that can be used to retrieve the instances.
+ The concrete type that will be registered.
+ The lifestyle that specifies how the returned instance will be cached.
+ The predicate that determines whether the
+ can be applied for the requested service type. This predicate
+ can be used to build a fallback mechanism where multiple registrations for the same service type
+ are made. Note that the predicate will be called a finite number of times and its result will be cached
+ for the lifetime of the container. It can't be used for selecting a type based on runtime conditions.
+
+
+ Thrown when one of the arguments is a null reference (Nothing in VB).
+
+
+ Thrown when this container instance is locked and can not be altered.
+
+
+
+
+ Conditionally registers that a new instance of will be
+ returned every time a is requested (transient) and where the
+ supplied returns true. The predicate will only be evaluated a finite
+ number of times; the predicate is unsuited for making decisions based on runtime conditions.
+
+
+ This method uses the container's
+ LifestyleSelectionBehavior to select
+ the exact lifestyle for the specified type. By default this will be
+ Transient.
+
+ The base type or interface to register. This can be an open-generic type.
+ The actual type that will be returned when requested.
+ The predicate that determines whether the
+ can be applied for the requested service type. This predicate
+ can be used to build a fallback mechanism where multiple registrations for the same service type
+ are made. Note that the predicate will be called a finite number of times and its result will be cached
+ for the lifetime of the container. It can't be used for selecting a type based on runtime conditions.
+
+ Thrown when one of the arguments is a null reference
+ (Nothing in VB).
+
+ Thrown when this container instance is locked and can not be altered.
+
+
+
+
+ Conditionally registers that an instance of will be
+ returned every time a is requested and where the supplied
+ returns true. The instance is cached according to the supplied
+ . The predicate will only be evaluated a finite number of times; the
+ predicate is unsuited for making decisions based on runtime conditions.
+
+ The base type or interface to register. This can be an open-generic type.
+ The actual type that will be returned when requested.
+ The lifestyle that defines how returned instances are cached.
+ The predicate that determines whether the
+ can be applied for the requested service type. This predicate
+ can be used to build a fallback mechanism where multiple registrations for the same service type
+ are made. Note that the predicate will be called a finite number of times and its result will be cached
+ for the lifetime of the container. It can't be used for selecting a type based on runtime conditions.
+
+ Thrown when one of the arguments is a null reference
+ (Nothing in VB).
+ Thrown when and
+ are not a generic type or when
+ is a partially-closed generic type.
+
+
+ Thrown when this container instance is locked and can not be altered.
+
+
+
+
+ Conditionally registers that an instance of the type returned from
+ will be returned every time a
+ is requested and where the supplied
+ returns true. The instance is cached according to the supplied
+ . Both the and
+ will only be evaluated a finite number of times;
+ they unsuited for making decisions based on runtime conditions.
+
+ The base type or interface to register. This can be an open-generic type.
+ A factory that allows building Type objects that define the
+ implementation type to inject, based on the given contextual information. The delegate is allowed
+ to return (partially) open-generic types.
+ The lifestyle that defines how returned instances are cached.
+ The predicate that determines whether the registration can be applied for
+ the requested service type. This predicate can be used to build a fallback mechanism where
+ multiple registrations for the same service type are made.
+ Note that the predicate will be called a finite number of times and its result will be cached
+ for the lifetime of the container. It can't be used for selecting a type based on runtime conditions.
+
+ Thrown when one of the arguments is a null reference
+ (Nothing in VB).
+ Thrown when is a
+ partially-closed generic type.
+
+
+ Thrown when this container instance is locked and can not be altered.
+
+
+
+
+ Conditionally registers that will be used every time a
+ requested and where the supplied
+ returns true. The predicate will only be evaluated a finite number of times; the predicate is
+ unsuited for making decisions based on runtime conditions.
+
+ The base type or interface to register. This can be an open-generic type.
+ The instance to register.
+ The predicate that determines whether the
+ can be applied for the requested service type. This predicate
+ can be used to build a fallback mechanism where multiple registrations for the same service type
+ are made. Note that the predicate will be called a finite number of times and its result will be cached
+ for the lifetime of the container. It can't be used for selecting a type based on runtime conditions.
+
+ Thrown when one of the arguments is a null reference
+ (Nothing in VB).
+
+ Thrown when this container instance is locked and can not be altered.
+
+
+
+
+ Conditionally registers that will be used every time a
+ is requested and where the supplied
+ returns true. The predicate will only be evaluated a finite number of times; the predicate is
+ unsuited for making decisions based on runtime conditions.
+
+ The base type or interface to register. This can be an open-generic type.
+ The instance to register.
+ The predicate that determines whether the
+ can be applied for the requested service type. This predicate
+ can be used to build a fallback mechanism where multiple registrations for the same service type
+ are made. Note that the predicate will be called a finite number of times and its result will be cached
+ for the lifetime of the container. It can't be used for selecting a type based on runtime conditions.
+
+ Thrown when one of the arguments is a null reference
+ (Nothing in VB).
+ Thrown when is open generic or
+ is not assignable to .
+
+ Thrown when this container instance is locked and can not be altered.
+
+
+
+
+ Occurs when an instance of a type is requested that has not been registered explicitly, allowing
+ resolution of unregistered types before the container tries to create the type.
+
+
+
+ The event is called by the container every time an
+ unregistered type is requested for the first time, allowing a developer to do unregistered type
+ resolution. By calling the
Register method on the
, a , or
delegate can be registered allowing the container to retrieve
@@ -911,7 +1508,7 @@
will result in an , while registrations that take a delegate (such as
Register<TService>(Func<TService>))
will result in an . Singletons that are passed in using their
- value (RegisterSingleton<TService>(TService))
+ value (RegisterInstance<TService>(TService))
will result in an . Note that other ExpressionBuilding
registrations might have changed the
property and might have supplied an of a different type. The order in
@@ -978,6 +1575,14 @@
+
+ Gets the object that allows access to methods related to registration and creation of collections.
+ The instance for this container.
+
+
+ This property is obsolete. Please use instead.
+ The instance for this container.
+
Registers that a new instance of will be returned every time it
@@ -1183,23 +1788,42 @@
is requested. The delegate is expected to produce new instances on
each call. The instances are cached according to the supplied .
- The interface or base type that can be used to retrieve instances.
- The delegate that allows building or creating new instances.
- The lifestyle that specifies how the returned instance will be cached.
+ The interface or base type that can be used to retrieve instances.
+ The delegate that allows building or creating new instances.
+ The lifestyle that specifies how the returned instance will be cached.
+
+ Thrown when this container instance is locked and can not be altered, or when the
+ has already been registered.
+
+ Thrown when one of the supplied arguments is a null reference (Nothing in VB).
+
+
+
+ Registers a single instance that will be returned when an instance of type
+ is requested. This must be thread-safe
+ when working in a multi-threaded environment.
+ NOTE: Do note that instances supplied by this method NEVER get disposed by the
+ container, since the instance is assumed to outlive this container instance. If disposing is
+ required, use the overload that accepts a delegate.
+
+ The interface or base type that can be used to retrieve the instance.
+ The instance to register.
Thrown when this container instance is locked and can not be altered, or when the
- has already been registered.
+ has already been registered.
- Thrown when one of the supplied arguments is a null reference (Nothing in VB).
+ Thrown when is a null reference.
+
-
+
Registers a single instance that will be returned when an instance of type
is requested. This must be thread-safe
when working in a multi-threaded environment.
NOTE: Do note that instances supplied by this method NEVER get disposed by the
container, since the instance is assumed to outlive this container instance. If disposing is
- required, use the overload that accepts a delegate.
+ required, use
+ RegisterSingleton<TService>(Func<TService>).
The interface or base type that can be used to retrieve the instance.
The instance to register.
@@ -1227,6 +1851,27 @@
the has already been registered.
+
+
+ Registers a single instance that will be returned when an instance of type
+ is requested. This must be thread-safe
+ when working in a multi-threaded environment.
+ NOTE: Do note that instances supplied by this method NEVER get disposed by the
+ container, since the instance is assumed to outlive this container instance. If disposing is
+ required, use
+ RegisterSingleton(Type, Func<object>).
+
+ The base type or interface to register.
+ The instance to register.
+ Thrown when either or
+ are null references (Nothing in VB).
+ Thrown when is
+ no sub type from .
+
+ Thrown when this container instance is locked and can not be altered, or when an
+ the has already been registered.
+
+
Registers a single concrete instance that will be constructed using constructor injection and will
@@ -1407,7 +2052,7 @@
(using constructor injection). Types that are newed up manually by supplying a
delegate to the container (using the
method) or registered as single instance
- (using ) will not trigger initialization.
+ (using ) will not trigger initialization.
When initialization of these instances is needed, this must be done manually, as can be seen in
the following example:
option is supplied.
Thrown when has an invalid value.
-
-
- Delegate that allows intercepting calls to and
- .
-
- Contextual information about the to be created object.
- A delegate that produces the actual instance according to its
- lifestyle settings.
- The instance that is returned from or an intercepted instance.
-
-
- Configuration options for the Container.
-
- The following example shows the typical usage of the ContainerOptions class.
- ();
-
- // Use of ContainerOptions class here.
- container.Options.AllowOverridingRegistrations = true;
-
- // Replaces the previous registration of ITimeProvider
- container.Register();
- ]]>
-
-
-
-
- Gets the container to which this ContainerOptions instance belongs to.
-
- The current Container.
-
-
+
- Gets or sets a value indicating whether the container allows overriding registrations. The default
- is false.
+ Contains methods for registering and creating collections in the .
- The value indicating whether the container allows overriding registrations.
-
+
- Gets or sets a value indicating whether the container should suppress checking for lifestyle
- mismatches (see: https://simpleinjector.org/dialm) when a component is resolved. The default
- is false.
+ Creates a collection of
+ all concrete, non-generic types (both public and internal) that are defined in the given
+ set of and that implement the given
+ with a default lifestyle and register them as a collection of .
+ Unless overridden using a custom
+ LifestyleSelectionBehavior, the
+ default lifestyle is Transient.
- The value indicating whether the container should suppress checking for lifestyle
- mismatches.
-
-
- Gets or sets a value indicating whether.
- This method is deprecated. Changing its value will have no effect.
- The value indicating whether the container will return an empty collection.
+ The element type of the collections to register.
+ A list of assemblies that will be searched.
+ Thrown when one of the supplied arguments contain a null
+ reference (Nothing in VB).
+ A collection that acts as stream, and calls back into the container to resolve instances
+ every time the collection is enumerated.
-
+
- Gets or sets a value indicating whether all the containers in the current AppDomain should throw
- exceptions that contain fully qualified type name. The default is false which means
- the type's namespace is omitted.
+ Creates a collection of
+ all concrete, non-generic types (both public and internal) that are defined in the given
+ set of and that implement the given
+ with a default lifestyle and register them as a collection of .
+ Unless overridden using a custom
+ LifestyleSelectionBehavior, the
+ default lifestyle is Transient.
- The value indicating whether exception message should emit full type names.
+ The element type of the collections to register.
+ A list of assemblies that will be searched.
+ Thrown when one of the supplied arguments contain a null
+ reference (Nothing in VB).
+ A collection that acts as stream, and calls back into the container to resolve instances
+ every time the collection is enumerated.
-
+
- Gets or sets the constructor resolution behavior. By default, the container only supports types
- that have a single public constructor.
+ Creates a collection of , whose instances will be resolved lazily
+ each time the returned collection of is enumerated.
+ The underlying collection is a stream that will return individual instances based on their
+ specific registered lifestyle, for each call to .
+ The order in which the types appear in the collection is the exact same order that the items were
+ supplied to this method, i.e the resolved collection is deterministic.
- The constructor resolution behavior.
- Thrown when the supplied value is a null reference.
-
- Thrown when the container already contains registrations.
+ The base type or interface for elements in the collection.
+ The collection of objects whose instances
+ will be requested from the container.
+ A collection that acts as stream, and calls back into the container to resolve instances
+ every time the collection is enumerated.
+ Thrown when is a null
+ reference (Nothing in VB).
-
-
- Gets or sets the dependency injection behavior.
- The constructor injection behavior.
- Thrown when the supplied value is a null reference.
-
- Thrown when the container already contains registrations.
+ Thrown when contains a null
+ (Nothing in VB) element, a generic type definition, or the is
+ not assignable from one of the given elements.
-
+
- Gets or sets the property selection behavior. The container's default behavior is to do no
- property injection.
+ Creates a collection of , whose instances will be resolved lazily
+ each time the returned collection of is enumerated.
+ The underlying collection is a stream that will return individual instances based on their
+ specific registered lifestyle, for each call to .
+ The order in which the types appear in the collection is the exact same order that the items were
+ supplied to this method, i.e the resolved collection is deterministic.
- The property selection behavior.
- Thrown when the supplied value is a null reference.
-
- Thrown when the container already contains registrations.
+ The base type or interface for elements in the collection.
+ The collection of objects whose instances
+ will be requested from the container.
+ A collection that acts as stream, and calls back into the container to resolve instances
+ every time the collection is enumerated.
+ Thrown when is a null
+ reference (Nothing in VB).
-
-
-
- Gets or sets the lifestyle selection behavior. The container's default behavior is to make
- registrations using the lifestyle.
- The lifestyle selection behavior.
- Thrown when the supplied value is a null reference.
-
- Thrown when the container already contains registrations.
+ Thrown when contains a null
+ (Nothing in VB) element, a generic type definition, or the is
+ not assignable from one of the given elements.
-
+
- Gets or sets the default lifestyle that the container will use when a registration is
- made when no lifestyle is supplied.
- The default lifestyle.
- Thrown when the supplied value is a null reference.
-
- Thrown when the container already contains registrations.
+ Creates a collection of , whose instances will be resolved lazily
+ each time the returned collection of is enumerated.
+ The underlying collection is a stream that will return individual instances based on their
+ specific registered lifestyle, for each call to .
+ The order in which the types appear in the collection is the exact same order that the items were
+ supplied to this method, i.e the resolved collection is deterministic.
+
+ The base type or interface for elements in the collection.
+ The collection of objects whose instances
+ will be requested from the container.
+ A collection that acts as stream, and calls back into the container to resolve instances
+ every time the collection is enumerated.
+ Thrown when is a null
+ reference (Nothing in VB).
-
-
-
- Gets or sets the default scoped lifestyle that the container should use when a registration is
- made using Lifestyle.Scoped.
- The default scoped lifestyle.
- Thrown when the supplied value is a null reference.
-
- Thrown when the container already contains registrations.
+ Thrown when contains a null
+ (Nothing in VB) element or when is not assignable from any of the
+ types supplied by the given instances.
-
-
- Gets or sets a value indicating whether the container will use dynamic assemblies for compilation.
- By default, this value is true for the first few containers that are created in an AppDomain
- and false for all other containers. You can set this value explicitly to false
- to prevent the use of dynamic assemblies or you can set this value explicitly to true to
- force more container instances to use dynamic assemblies. Note that creating an infinite number
- of Container instances (for instance one per web request)
- with this property set to true will result in a memory leak; dynamic assemblies take up
- memory and will only be unloaded when the AppDomain is unloaded.
-
- A boolean indicating whether the container should use a dynamic assembly for compilation.
-
-
-
+
- Registers an delegate that allows intercepting calls to
- GetInstance and
- .
+ Creates a collection of , whose instances will be resolved lazily
+ each time the returned collection of is enumerated.
+ The underlying collection is a stream that will return individual instances based on their
+ specific registered lifestyle, for each call to .
+ The order in which the types appear in the collection is the exact same order that the items were
+ supplied to this method, i.e the resolved collection is deterministic.
-
- If multiple registered instances must be applied, they will be
- applied/wrapped in the order of registration, i.e. the first registered interceptor will call the
- original instance producer delegate, the second interceptor will call the first interceptor, etc.
- The last registered interceptor will become the outermost method in the chain and will be called
- first.
-
- The delegate to register.
- The predicate that will be used to check whether the given delegate must
- be applied to a registration or not. The given predicate will be called once for each registration
- in the container.
-
- Thrown when either the or are
- null references.
+ The base type or interface for elements in the collection.
+ The collection of objects whose instances
+ will be requested from the container.
+ A collection that acts as stream, and calls back into the container to resolve instances
+ every time the collection is enumerated.
+ Thrown when is a null
+ reference (Nothing in VB).
-
- Thrown when this container instance is locked and can not be altered.
+ Thrown when contains a null
+ (Nothing in VB) element or when is not assignable from any of the
+ types supplied by the given instances.
-
- The following example shows the usage of the method:
-
- {
- object instance = producer.Invoke();
- Console.WriteLine(instance.GetType().Name + " resolved for " + context.Producer.ServiceType.Name);
- return instance;
- },
- context => context.Producer.ServiceType.Name.EndsWith("Controller"));
-
- container.Register();
- container.Register();
-
- // This line will write "HomeViewModel resolved for IHomeViewModel" to the console.
- container.GetInstance();
- ]]>
-
-
-
- Returns a string that represents the current object.
- A string that represents the current object.
-
-
-
- An instance of this type can be injected into constructors of decorator classes that are registered
- using RegisterDecorator. This type contains
- contextual information about the applied decoration and it allows users to examine the given instance
- to make runtime decisions.
-
-
+
- Gets the closed generic service type for which the decorator is about to be applied. The original
- service type will be returned, even if other decorators have already been applied to this type.
+ Creates a new instance defining the creation of a collection of
+ all concrete, non-generic types (both public and internal) that are defined in the given
+ set of and that implement the given
+ with a default lifestyle and register them as a collection of .
+ Unless overridden using a custom
+ LifestyleSelectionBehavior, the
+ default lifestyle is Transient.
+ The collection's instances will be resolved lazily
+ each time the returned collection of is enumerated.
+ The underlying collection is a stream that will return individual instances based on their
+ specific registered lifestyle, for each call to .
+ The order in which the types appear in the collection is the exact same order that the items were
+ supplied to this method, i.e the resolved collection is deterministic.
- The closed generic service type.
+ The base type or interface for elements in the collection.
+ A list of assemblies that will be searched.
+ A new instance.
+ Thrown when one of the supplied arguments contain a null
+ reference (Nothing in VB).
-
+
- Gets the type of the implementation that is created by the container and for which the decorator
- is about to be applied. The original implementation type will be returned, even if other decorators
- have already been applied to this type. Please not that the implementation type can not always be
- determined. In that case the closed generic service type will be returned.
+ Creates a new instance defining the creation of a collection of
+ all concrete, non-generic types (both public and internal) that are defined in the given
+ set of and that implement the given
+ with a default lifestyle and register them as a collection of .
+ Unless overridden using a custom
+ LifestyleSelectionBehavior, the
+ default lifestyle is Transient.
+ The collection's instances will be resolved lazily
+ each time the returned collection of is enumerated.
+ The underlying collection is a stream that will return individual instances based on their
+ specific registered lifestyle, for each call to .
+ The order in which the types appear in the collection is the exact same order that the items were
+ supplied to this method, i.e the resolved collection is deterministic.
- The implementation type.
+ The base type or interface for elements in the collection.
+ A list of assemblies that will be searched.
+ A new instance.
+ Thrown when one of the supplied arguments contain a null
+ reference (Nothing in VB).
-
+
- Gets the list of the types of decorators that have already been applied to this instance.
+ Creates a new instance defining the creation of a collection of
+ , whose instances will be resolved lazily
+ each time the returned collection of is enumerated.
+ The underlying collection is a stream that will return individual instances based on their
+ specific registered lifestyle, for each call to .
+ The order in which the types appear in the collection is the exact same order that the items were
+ supplied to this method, i.e the resolved collection is deterministic.
- The applied decorators.
+ The base type or interface for elements in the collection.
+ The collection of objects whose instances
+ will be requested from the container.
+ A new instance.
+ Thrown when is a null
+ reference (Nothing in VB).
+
+ Thrown when contains a null
+ (Nothing in VB) element, a generic type definition, or the is
+ not assignable from one of the given elements.
+
-
+
- Gets the current object that describes the intention to create a new
- instance with its currently applied decorators.
+ Creates a new instance defining the creation of a collection of
+ , whose instances will be resolved lazily
+ each time the returned collection of is enumerated.
+ The underlying collection is a stream that will return individual instances based on their
+ specific registered lifestyle, for each call to .
+ The order in which the types appear in the collection is the exact same order that the items were
+ supplied to this method, i.e the resolved collection is deterministic.
- The current expression that is about to be decorated.
+ The base type or interface for elements in the collection.
+ The collection of objects whose instances
+ will be requested from the container.
+ A new instance.
+ Thrown when is a null
+ reference (Nothing in VB).
+
+ Thrown when contains a null
+ (Nothing in VB) element, a generic type definition, or the is
+ not assignable from one of the given elements.
+
-
+
- An instance of this type will be supplied to the
- delegate that is that is supplied to the
- RegisterDecorator
- overload that takes this delegate. This type contains information about the decoration that is about
- to be applied and it allows users to examine the given instance to see whether the decorator should
- be applied or not.
+ Creates a new instance defining the creation of a collection of
+ , whose instances will be resolved lazily
+ each time the returned collection of is enumerated.
+ The underlying collection is a stream that will return individual instances based on their
+ specific registered lifestyle, for each call to .
+ The order in which the types appear in the collection is the exact same order that the items were
+ supplied to this method, i.e the resolved collection is deterministic.
-
- Please see the
- RegisterDecorator
- method for more information.
-
+ The base type or interface for elements in the collection.
+ The collection of objects whose instances
+ will be requested from the container.
+ A new instance.
+ Thrown when is a null
+ reference (Nothing in VB).
+
+ Thrown when contains a null
+ (Nothing in VB) element or when is not assignable from any of the
+ types supplied by the given instances.
+
-
+
- Gets the closed generic service type for which the decorator is about to be applied. The original
- service type will be returned, even if other decorators have already been applied to this type.
+ Creates a new instance defining the creation of a collection of
+ , whose instances will be resolved lazily
+ each time the returned collection of is enumerated.
+ The underlying collection is a stream that will return individual instances based on their
+ specific registered lifestyle, for each call to .
+ The order in which the types appear in the collection is the exact same order that the items were
+ supplied to this method, i.e the resolved collection is deterministic.
- The closed generic service type.
+ The base type or interface for elements in the collection.
+ The collection of objects whose instances
+ will be requested from the container.
+ A new instance.
+ Thrown when is a null
+ reference (Nothing in VB).
+
+ Thrown when contains a null
+ (Nothing in VB) element or when is not assignable from any of the
+ types supplied by the given instances.
+
-
+
- Gets the type of the implementation that is created by the container and for which the decorator
- is about to be applied. The original implementation type will be returned, even if other decorators
- have already been applied to this type. Please not that the implementation type can not always be
- determined. In that case the closed generic service type will be returned.
+ Allows appending new registrations to existing registrations made using one of the
+ Collections.Register overloads.
- The implementation type.
+ The service type of the collection.
+ The registration to append.
+ Thrown when one of the supplied arguments is a null
+ reference (Nothing in VB).
+ Thrown when the is not a
+ reference type, is open generic, or ambiguous.
+ Thrown when the container is locked.
+ Thrown when the method is called for a registration
+ that is made with one of the Collections.Register overloads that accepts a dynamic collection
+ (an IEnumerable or IEnumerable<TService>).
-
+
- Gets the list of the types of decorators that have already been applied to this instance.
+ Allows appending new registrations to existing registrations made using one of the
+ Collections.Register overloads.
- The applied decorators.
+ The service type of the collection.
+ The implementation type to append.
+ Thrown when one of the supplied arguments is a null
+ reference (Nothing in VB).
+ Thrown when the is not a
+ reference type, or ambiguous.
+ Thrown when the container is locked.
+ Thrown when the method is called for a registration
+ that is made with one of the Collections.Register overloads that accepts a dynamic collection
+ (an IEnumerable or IEnumerable<TService>).
-
+
- Gets the current object that describes the intention to create a new
- instance with its currently applied decorators.
+ Appends a new to existing registrations made using one of the
+ Container.Collections.Register
+ overloads.
- The current expression that is about to be decorated.
+ The service type of the collection.
+ The registration to append.
+ Thrown when one of the supplied arguments is a null
+ reference (Nothing in VB).
+ Thrown when the is not a
+ reference type, is open generic, or ambiguous.
+ Thrown when the container is locked.
+ Thrown when the method is called for a registration
+ that is made with one of the Collections.Register overloads that accepts a dynamic collection
+ (an IEnumerable or IEnumerable<TService>).
-
+
- Thrown by the container in case of a diagnostic error.
+ Appends a new registration of to existing registrations
+ made for a collection of elements using one of the
+ Container.Collections.Register
+ overloads.
+ The element type of the collections to register.
+ The concrete type that will be appended as registration to the
+ collection.
+ Thrown when the is ambiguous.
+
-
+
- Initializes a new instance of the class.
+ Appends a new registration of to existing registrations
+ made for a collection of elements using one of the
+ Container.Collections.Register
+ overloads with the given .
+ The element type of the collections to register.
+ The concrete type that will be appended as registration to the
+ collection.
+ The lifestyle that specifies how the returned instance will be cached.
+ Thrown when the is ambiguous.
+
+ Thrown when is a null reference.
+
-
+
- Initializes a new instance of the class with a specified error
- message.
+ Appends a new registration to existing registrations made for a collection of
+ elements using one of the
+ Container.Collections.Register
+ overloads.
- The message that describes the error.
+ The service type of the collection.
+ The implementation type to append.
+ Thrown when one of the supplied arguments is a null
+ reference (Nothing in VB).
+ Thrown when the is not a
+ reference type, or ambiguous.
+ Thrown when the container is locked.
+ Thrown when the method is called for a registration
+ that is made with one of the Collections.Register overloads that accepts a dynamic collection
+ (an IEnumerable or IEnumerable<TService>).
-
+
- Initializes a new instance of the class with a specified error
- message.
+ Registers a dynamic (container uncontrolled) collection of elements of type
+ . A call to will return the
+ itself, and updates to the collection will be
+ reflected in the result. If updates are allowed, make sure the collection can be iterated safely
+ if you're running a multi-threaded application.
- The list of errors.
+ The interface or base type that can be used to retrieve instances.
+ The container-uncontrolled collection to register.
+
+ Thrown when this container instance is locked and can not be altered, or when a
+ for has already been registered.
+
+ Thrown when is a null
+ reference.
-
+
- Initializes a new instance of the class with a specified error
- message and a reference to the inner exception that is the cause of this exception.
+ Registers a collection of singleton elements of type .
-
- The error message that explains the reason for the exception.
-
-
- The exception that is the cause of the current exception, or a null reference (Nothing in Visual
- Basic) if no inner exception is specified.
-
+ The interface or base type that can be used to retrieve instances.
+ The collection to register.
+
+ Thrown when this container instance is locked and can not be altered, or when a
+ for has already been registered.
+
+ Thrown when is a null
+ reference.
+ Thrown when one of the elements of
+ is a null reference.
-
+
- Initializes a new instance of the class with serialized data.
+ Registers a collection of , whose instances will be resolved lazily
+ each time the resolved collection of is enumerated.
+ The underlying collection is a stream that will return individual instances based on their
+ specific registered lifestyle, for each call to .
+ The order in which the types appear in the collection is the exact same order that the items were
+ supplied to this method, i.e the resolved collection is deterministic.
-
- The that holds the serialized object data about the exception
- being thrown.
-
-
- The that contains contextual information about the source or
- destination.
-
-
- The parameter is null.
+ The base type or interface for elements in the collection.
+ The collection of objects whose instances
+ will be requested from the container.
+ Thrown when is a null
+ reference (Nothing in VB).
-
- The class name is null or hresult is zero (0).
+ Thrown when contains a null
+ (Nothing in VB) element, a generic type definition, or the is
+ not assignable from one of the given elements.
-
- Gets the list of instances.
- A list of instances.
+
+
+ Registers a collection of , whose instances will be resolved lazily
+ each time the resolved collection of is enumerated.
+ The underlying collection is a stream that will return individual instances based on their
+ specific registered lifestyle, for each call to .
+ The order in which the types appear in the collection is the exact same order that the items were
+ supplied to this method, i.e the resolved collection is deterministic.
+
+ The base type or interface for elements in the collection.
+ The collection of objects whose instances
+ will be requested from the container.
+ Thrown when is a null
+ reference (Nothing in VB).
+
+ Thrown when contains a null
+ (Nothing in VB) element, a generic type definition, or the is
+ not assignable from one of the given elements.
+
-
+
- Provides data for and interaction with the
- ExpressionBuilding event of
- the . An observer can change the
- property to change the component that is
- currently being built.
+ Registers a collection of , whose instances will be resolved lazily
+ each time the resolved collection of is enumerated.
+ The underlying collection is a stream that will return individual instances based on their
+ specific registered lifestyle, for each call to .
+ The order in which the types appear in the collection is the exact same order that the items were
+ supplied to this method, i.e the resolved collection is deterministic.
+ The base type or interface for elements in the collection.
+ The collection of objects whose instances
+ will be requested from the container.
+ Thrown when one of the supplied arguments is a null
+ reference (Nothing in VB).
+
+ Thrown when contains a null
+ (Nothing in VB) element or when is not assignable from any of the
+ service types supplied by the given instances.
+
-
- Gets the registered service type that is currently requested.
- The registered service type that is currently requested.
-
-
+
- Gets the type that is known to be returned by the
- Expression (most often the implementation
- type used in the Register call). This type will be a derivative of
- RegisteredServiceType (or
- or RegisteredServiceType itself). If the Expression is changed, the new expression
- must also return an instance of type KnownImplementationType or a sub type.
- This information must be described in the new Expression.
+ Registers a collection of , whose instances will be resolved lazily
+ each time the resolved collection of is enumerated.
+ The underlying collection is a stream that will return individual instances based on their
+ specific registered lifestyle, for each call to .
+ The order in which the types appear in the collection is the exact same order that the items were
+ supplied to this method, i.e the resolved collection is deterministic.
- A .
-
-
- Gets the lifestyle for the component that is currently being built.
- The .
-
-
- Gets or sets the currently registered
- Expression.
- The current registration.
- Thrown when the supplied value is a null reference.
+ The base type or interface for elements in the collection.
+ The collection of objects whose instances
+ will be requested from the container.
+ Thrown when one of the supplied arguments is a null
+ reference (Nothing in VB).
+
+ Thrown when contains a null
+ (Nothing in VB) element, a generic type definition, or the is
+ not assignable from one of the given elements.
+
-
+
- Gets the collection of currently known relationships. This information is used by the Diagnostics
- Debug View. Change the contents of this collection to represent the changes made to the
- Expression property (if any). This allows
- the Diagnostics Debug View to analyze those new relationships as well.
+ Registers a collection of , whose instances will be resolved lazily
+ each time the resolved collection of is enumerated.
+ The underlying collection is a stream that will return individual instances based on their
+ specific registered lifestyle, for each call to .
+ The order in which the types appear in the collection is the exact same order that the items were
+ supplied to this method, i.e the resolved collection is deterministic.
- The collection of instances.
+ The base type or interface for elements in the collection. This can be
+ an a non-generic type, closed generic type or generic type definition.
+ The collection of objects whose instances
+ will be requested from the container.
+ Thrown when one of the supplied arguments is a null
+ reference (Nothing in VB).
+
+ Thrown when contains a null
+ (Nothing in VB) element or when is not assignable from any of the
+ service types supplied by the given instances.
+
-
+
- Provides data for and interaction with the
- ExpressionBuilt event of
- the . An observer can change the
- property to change the component that is currently
- being built.
+ Registers a dynamic (container uncontrolled) collection of elements of type
+ . A call to will return the
+ itself, and updates to the collection will be
+ reflected in the result. If updates are allowed, make sure the collection can be iterated safely
+ if you're running a multi-threaded application.
+ The base type or interface for elements in the collection.
+ The collection of items to register.
+ Thrown when one of the supplied arguments is a null
+ reference (Nothing in VB).
+ Thrown when represents an
+ open generic type.
-
- Initializes a new instance of the class.
- Type of the registered service.
- The registered expression.
-
-
- Gets the registered service type that is currently requested.
- The registered service type that is currently requested.
-
-
- Gets or sets the currently registered
- Expression.
- The current registration.
- Thrown when the supplied value is a null reference.
-
-
- Gets or sets the current lifestyle of the registration.
- The original lifestyle of the registration.
-
-
+
- Gets the collection of currently known relationships. This information is used by the Diagnostics
- Debug View. Change the contents of this collection to represent the changes made to the
- Expression property (if any). This allows
- the Diagnostics Debug View to analyze those new relationships as well.
+ Registers all concrete, non-generic types (both public and internal) that are defined in the given
+ set of and that implement the given
+ with a default lifestyle and register them as a collection of .
+ Unless overridden using a custom
+ LifestyleSelectionBehavior, the
+ default lifestyle is Transient.
- The collection of instances.
+ The element type of the collections to register. This can be either
+ a non-generic, closed-generic or open-generic type.
+ A list of assemblies that will be searched.
+ Thrown when one of the supplied arguments contain a null
+ reference (Nothing in VB).
-
+
- Helper methods for the container.
+ Registers all concrete, non-generic types (both public and internal) that are defined in the given
+ set of and that implement the given
+ with a default lifestyle and register them as a collection of .
+ Unless overridden using a custom
+ LifestyleSelectionBehavior, the
+ default lifestyle is Transient.
+ The element type of the collections to register. This can be either
+ a non-generic, closed-generic or open-generic type.
+ A list of assemblies that will be searched.
+ Thrown when one of the supplied arguments contain a null
+ reference (Nothing in VB).
-
+
- Contains contextual information about the direct consumer for which the given dependency is injected
- into.
+ Registers all concrete, non-generic types (both public and internal) that are defined in the given
+ set of and that implement the given
+ with a default lifestyle and register them as a collection of .
+ Unless overridden using a custom
+ LifestyleSelectionBehavior, the
+ default lifestyle is Transient.
+ Composites,
+ decorators and
+ generic type definitions
+ will be excluded from registration.
+ The element type of the collections to register. This can be either
+ a non-generic, closed-generic or open-generic type.
+ A list of assemblies that will be searched.
+ Thrown when one of the supplied arguments contain a null
+ reference (Nothing in VB).
-
- Initializes a new instance of the class.
- The constructor parameter for the created component.
-
-
- Initializes a new instance of the class.
- The implementation type of the consumer of the component that should be created.
- The property for the created component.
-
-
- Gets the service type of the consumer of the component that should be created.
- The closed generic service type.
-
-
- Gets the implementation type of the consumer of the component that should be created.
- The implementation type.
-
-
+
- Gets the information about the consumer's target in which the dependency is injected. The target
- can be either a property or a constructor parameter.
+ Registers all concrete, non-generic types (both public and internal) that are defined in the given
+ set of and that implement the given
+ with a default lifestyle and register them as a collection of .
+ Unless overridden using a custom
+ LifestyleSelectionBehavior, the
+ default lifestyle is Transient.
+ Composites,
+ decorators and
+ generic type definitions
+ will be excluded from registration.
- The for this context.
-
-
- Returns a string that represents the .
- A string.
+ The element type of the collections to register. This can be either
+ a non-generic, closed-generic or open-generic type.
+ A list of assemblies that will be searched.
+ Thrown when one of the supplied arguments contain a null
+ reference (Nothing in VB).
-
+
- Discovers the attributes of the code element (a property or parameter) where a dependency will be
- injected into, and provides access to its meta data.
+ Delegate that allows intercepting calls to and
+ .
+ Contextual information about the to be created object.
+ A delegate that produces the actual instance according to its
+ lifestyle settings.
+ The instance that is returned from or an intercepted instance.
-
- Gets the constructor argument of the consumer of the component where the dependency will be
- injected into. The property can return null.
- The or null when the dependency is injected into a property.
-
-
- Gets the property of the consumer of the component where the dependency will be injected into.
- The property can return null.
- The or null when the dependency is injected into a constructor
- argument instead.
-
-
- Gets the name of the target.
- A string containing the name of the target.
-
-
- Gets the type of the target.
- A containing the type of the target.
-
-
- Gets the member of the target. This is either the constructor of the parameter, or in
- case the target is a property, the property itself will be returned.
- A containing the type of the target.
+
+ Configuration options for the Container.
+
+ The following example shows the typical usage of the ContainerOptions class.
+ ();
+
+ // Use of ContainerOptions class here.
+ container.Options.AllowOverridingRegistrations = true;
+
+ // Replaces the previous registration of ITimeProvider
+ container.Register();
+ ]]>
+
-
+
- Returns an array of all of the custom attributes defined on either the or
- the , excluding named attributes, or an empty array if there are no custom
- attributes.
+ Gets the container to which this ContainerOptions instance belongs to.
- When true, look up the hierarchy chain for the inherited custom attribute.
- An array of Objects representing custom attributes, or an empty array.
- The custom attribute type cannot be loaded.
- There is more than one attribute of type attributeType
- defined on this member.
+ The current Container.
-
+
- Returns an array of custom attributes defined on either the or
- the , identified by type, or an empty array if there are no custom
- attributes of that type.
+ Gets or sets a value indicating whether the container allows overriding registrations. The default
+ is false.
- The type of the custom attributes.
- When true, look up the hierarchy chain for the inherited custom attribute.
- An array of Objects representing custom attributes, or an empty array.
- The custom attribute type cannot be loaded.
- attributeType is null.
+ The value indicating whether the container allows overriding registrations.
-
+
- Indicates whether one or more instance of attributeType is defined on this either the
- or the .
+ Gets or sets a value indicating whether the container should suppress checking for lifestyle
+ mismatches (see: https://simpleinjector.org/dialm) when a component is resolved. The default
+ is false.
- The type of the custom attributes.
- When true, look up the hierarchy chain for the inherited custom attribute.
- true if the attributeType is defined on this member; false otherwise.
+ The value indicating whether the container should suppress checking for lifestyle
+ mismatches.
-
+
+ Gets or sets a value indicating whether.
+ This method is deprecated. Changing its value will have no effect.
+ The value indicating whether the container will return an empty collection.
+
+
- Retrieves a custom attribute of a specified type that is applied to a specified parameter.
+ Gets or sets a value indicating whether all the containers in the current AppDomain should throw
+ exceptions that contain fully qualified type name. The default is false which means
+ the type's namespace is omitted.
- The parameter to inspect.
- A custom attribute that matches T, or null if no such attribute is found.
+ The value indicating whether exception message should emit full type names.
-
+
- Retrieves a custom attribute of a specified type that is applied to a specified parameter, and
- optionally inspects the ancestors of that parameter.
+ Gets or sets the constructor resolution behavior. By default, the container only supports types
+ that have a single public constructor.
- The parameter to inspect.The parameter to inspect.
- True to inspect the ancestors of element; otherwise, false.
- A custom attribute that matches T, or null if no such attribute is found.
+ The constructor resolution behavior.
+ Thrown when the supplied value is a null reference.
+
+ Thrown when the container already contains registrations.
+
-
+
+ Gets or sets the dependency injection behavior.
+ The constructor injection behavior.
+ Thrown when the supplied value is a null reference.
+
+ Thrown when the container already contains registrations.
+
+
+
- Retrieves a custom attribute of a specified type that is applied to a specified parameter.
+ Gets or sets the property selection behavior. The container's default behavior is to do no
+ property injection.
- The type of attribute to search for.
- A custom attribute that matches attributeType, or null if no such attribute is found.
+ The property selection behavior.
+ Thrown when the supplied value is a null reference.
+
+ Thrown when the container already contains registrations.
+
-
+
- Retrieves a custom attribute of a specified type that is applied to a specified parameter, and
- optionally inspects the ancestors of that parameter.
-
- The type of attribute to search for.
- True to inspect the ancestors of element; otherwise, false.
- A custom attribute matching attributeType, or null if no such attribute is found.
+ Gets or sets the lifestyle selection behavior. The container's default behavior is to make
+ registrations using the lifestyle.
+ The lifestyle selection behavior.
+ Thrown when the supplied value is a null reference.
+
+ Thrown when the container already contains registrations.
+
-
+
- Retrieves a collection of custom attributes of a specified type that are applied to a specified parameter.
-
- The type of attribute to search for.
- A collection of the custom attributes that are applied to element and that match T, or
- an empty collection if no such attributes exist.
+ Gets or sets the default lifestyle that the container will use when a registration is
+ made when no lifestyle is supplied.
+ The default lifestyle.
+ Thrown when the supplied value is a null reference.
+
+ Thrown when the container already contains registrations.
+
-
+
- Retrieves a collection of custom attributes of a specified type that are applied to a specified
- parameter, and optionally inspects the ancestors of that parameter.
+ Gets or sets the default scoped lifestyle that the container should use when a registration is
+ made using Lifestyle.Scoped.
+ The default scoped lifestyle.
+ Thrown when the supplied value is a null reference.
+
+ Thrown when the container already contains registrations.
+
+
+
+
+ Gets or sets a value indicating whether the container will use dynamic assemblies for compilation.
+ By default, this value is true for the first few containers that are created in an AppDomain
+ and false for all other containers. You can set this value explicitly to false
+ to prevent the use of dynamic assemblies or you can set this value explicitly to true to
+ force more container instances to use dynamic assemblies. Note that creating an infinite number
+ of Container instances (for instance one per web request)
+ with this property set to true will result in a memory leak; dynamic assemblies take up
+ memory and will only be unloaded when the AppDomain is unloaded.
- The type of attribute to search for.
- True to inspect the ancestors of element; otherwise, false.
- A collection of the custom attributes that are applied to element and that match T, or an
- empty collection if no such attributes exist.
+ A boolean indicating whether the container should use a dynamic assembly for compilation.
+
-
+
- Produces instances for a given registration. Instances of this type are generally created by the
- container when calling one of the Register overloads. Instances can be retrieved by calling
- GetCurrentRegistrations() or
- GetRegistration(Type, bool).
+ Registers an delegate that allows intercepting calls to
+ GetInstance and
+ .
- The Register method overloads create InstanceProducer instances internally, but
- InstanceProducers can be created manually to implement special scenarios. An
- InstanceProducer wraps instance. The Registration builds an
- that describes the intend to create the instance according to a certain
- lifestyle. The InstanceProducer on the other hand transforms this Expression to a
- delegate and allows the actual instance to be created. A Registration itself can't create any
- instance. The InsanceProducer allows intercepting created instances by hooking onto the
- Container.ExpressionBuilt event. The
- RegisterDecorator methods for
- instance work by hooking onto the ExpressionBuilt event and allow wrapping the returned instance
- with a decorator.
+ If multiple registered instances must be applied, they will be
+ applied/wrapped in the order of registration, i.e. the first registered interceptor will call the
+ original instance producer delegate, the second interceptor will call the first interceptor, etc.
+ The last registered interceptor will become the outermost method in the chain and will be called
+ first.
+ The delegate to register.
+ The predicate that will be used to check whether the given delegate must
+ be applied to a registration or not. The given predicate will be called once for each registration
+ in the container.
+
+ Thrown when either the or are
+ null references.
+
+
+ Thrown when this container instance is locked and can not be altered.
+
- The following example shows the creation of two different InstanceProducer instances that wrap
- the same Registration instance. Since the Registration is created using the
- Singleton lifestyle, both producers will return
- the same instance. The InstanceProducer for the Interface1 however, will wrap that
- instance in a (transient) Interface1Decorator.
+ The following example shows the usage of the method:
(container);
-
- var producer1 = new InstanceProducer(typeof(Interface1), registration);
- var producer2 = new InstanceProducer(typeof(Interface2), registration);
-
- container.RegisterDecorator(typeof(Interface1), typeof(Interface1Decorator));
-
- var instance1 = (Interface1)producer1.GetInstance();
- var instance2 = (Interface2)producer2.GetInstance();
-
- Assert.IsInstanceOfType(instance1, typeof(Interface1Decorator));
- Assert.IsInstanceOfType(instance2, typeof(ServiceImpl));
+ container.Options.RegisterResolveInterceptor((context, producer) =>
+ {
+ object instance = producer.Invoke();
+ Console.WriteLine(instance.GetType().Name + " resolved for " + context.Producer.ServiceType.Name);
+ return instance;
+ },
+ context => context.Producer.ServiceType.Name.EndsWith("Controller"));
+
+ container.Register();
+ container.Register();
- Assert.AreSame(((Interface1Decorator)instance1).DecoratedInstance, instance2);
+ // This line will write "HomeViewModel resolved for IHomeViewModel" to the console.
+ container.GetInstance();
]]>
-
- Initializes a new instance of the class.
- The service type for which this instance is created.
- The .
-
-
-
- Gets the for this registration. The returned lifestyle can differ from the
- lifestyle that is used during the registration. This can happen for instance when the registration
- is changed by an ExpressionBuilt
- registration or gets decorated.
-
- The for this registration.
-
-
- Gets the service type for which this producer produces instances.
- A instance.
-
-
- Gets the instance for this instance.
- The .
-
-
-
- Creates a new based on the given
- and where the will be used as-is;
- no interception (using ExpressionBuilt) such as
- decorators will be applied.
-
- The service type for which this instance is created.
- The expression that describes the instance to be produced.
- The instance for this registration.
- A new that describes the expression.
-
-
- Produces an instance.
- An instance. Will never return null.
- When the instance could not be retrieved or is null.
+
+ Returns a string that represents the current object.
+ A string that represents the current object.
-
+
- Builds an expression that expresses the intent to get an instance by the current producer. A call
- to this method locks the container. No new registrations can't be made after a call to this method.
+ An instance of this type can be injected into constructors of decorator classes that are registered
+ using RegisterDecorator. This type contains
+ contextual information about the applied decoration and it allows users to examine the given instance
+ to make runtime decisions.
- An Expression.
-
+
- Gets the collection of relationships for this instance that the container knows about.
- This includes relationships between the registered type and its dependencies and relationships
- between applied decorators and their dependencies. Note that types that are not newed up by the
- container and properties that are injected inside a custom delegate that is registered using the
- RegisterInitializer
- method are unknown to the container and are not returned from this method.
- Also note that this method will return an empty collection when called before the
- registered type is requested from the container (or before
- Verify is called).
+ Gets the closed generic service type for which the decorator is about to be applied. The original
+ service type will be returned, even if other decorators have already been applied to this type.
- An array of instances.
+ The closed generic service type.
-
+
- Builds a string representation of the object graph with the current instance as root of the
- graph.
+ Gets the type of the implementation that is created by the container and for which the decorator
+ is about to be applied. The original implementation type will be returned, even if other decorators
+ have already been applied to this type. Please not that the implementation type can not always be
+ determined. In that case the closed generic service type will be returned.
- A string representation of the object graph.
- Thrown when this method is called before
- or have been called. These calls can be
- done directly and explicitly by the user on this instance, indirectly by calling
- or on an instance that depends on this
- instance, or by calling Verify on the container.
-
+ The implementation type.
-
+
- Produces instances for a given registration. Instances of this type are generally created by the
- container when calling one of the Register overloads. Instances can be retrieved by calling
- or .
+ Gets the list of the types of decorators that have already been applied to this instance.
- The service type.
-
-
- Initializes a new instance of the class.
- The .
-
-
- Produces an instance.
- An instance. Will never return null.
- When the instance could not be retrieved or is null.
+ The applied decorators.
-
+
- Factory for the creation of a delegate that applies caching to the supplied
- .
+ Gets the current object that describes the intention to create a new
+ instance with its currently applied decorators.
- A factory for creating new instances.
- A factory that returns cached instances.
+ The current expression that is about to be decorated.
-
+
- Instances returned from the container can be cached. The contains several
- overloads of the Register method that take a Lifestyle instance as argument to define
- how returned instances should be cached. The core library contains two lifestyles out of the box. By
- supplying Lifestyle.Transient, the registered instance is not
- cached; a new instance is returned every time it is requested or injected. By supplying
- Lifestyle.Singleton instances can be cached indefinitely; only
- a single instance of the registered component will be returned by that container instance. Other
- lifestyles are defined in integration and extension packages. The
- CreateCustom method allows defining a custom lifestyle and
- the CreateHybrid method
- allows creating a lifestyle that mixes multiple other lifestyles.
+ An instance of this type will be supplied to the
+ delegate that is that is supplied to the
+ RegisterDecorator
+ overload that takes this delegate. This type contains information about the decoration that is about
+ to be applied and it allows users to examine the given instance to see whether the decorator should
+ be applied or not.
- This type is abstract and can be overridden to implement a custom lifestyle.
+ Please see the
+ RegisterDecorator
+ method for more information.
-
+
- The lifestyle instance that doesn't cache instances. A new instance of the specified
- component is created every time the registered service is requested or injected.
+ Gets the closed generic service type for which the decorator is about to be applied. The original
+ service type will be returned, even if other decorators have already been applied to this type.
-
- The following example registers the SomeServiceImpl implementation for the
- ISomeService service type using the Transient lifestyle:
- (Lifestyle.Transient);
- ]]>
- Note that Transient is the default lifestyle, the previous registration can be reduced to
- the following:
- ();
- ]]>
-
+ The closed generic service type.
-
+
-
- The lifestyle that caches components according to the lifetime of the container's configured
- scoped lifestyle.
-
-
- In case the type of a cached instance implements , the container will
- ensure its disposal when the active scope gets disposed.
-
+ Gets the type of the implementation that is created by the container and for which the decorator
+ is about to be applied. The original implementation type will be returned, even if other decorators
+ have already been applied to this type. Please not that the implementation type can not always be
+ determined. In that case the closed generic service type will be returned.
-
- The following example registers the RealTimeProvider implementation for the
- ITimeProvider service type using the Scoped lifestyle:
- (Lifestyle.Scoped);
- ]]>
-
+ The implementation type.
-
+
-
- The lifestyle that caches components during the lifetime of the instance
- and guarantees that only a single instance of that component is created for that instance. Since
- general use is to create a single Container instance for the lifetime of the application /
- AppDomain, this would mean that only a single instance of that component would exist during the
- lifetime of the application. In a multi-threaded applications, implementations registered using
- this lifestyle must be thread-safe.
-
-
- In case the type of a cached instance implements , the container will
- ensure its disposal when the container gets disposed.
-
+ Gets the list of the types of decorators that have already been applied to this instance.
-
- The following example registers the RealTimeProvider implementation for the
- ITimeProvider service type using the Singleton lifestyle:
- (Lifestyle.Singleton);
- ]]>
-
+ The applied decorators.
-
- Initializes a new instance of the class.
- The user friendly name of this lifestyle.
- Thrown when is null (Nothing in VB)
- or an empty string.
+
+
+ Gets the current object that describes the intention to create a new
+ instance with its currently applied decorators.
+
+ The current expression that is about to be decorated.
-
- Gets the user friendly name of this lifestyle.
- The user friendly name of this lifestyle.
+
+
+ Hooks into the building process and adds a decorator if needed.
+
-
+
- Gets the length of the lifestyle. Implementers must implement this property. The diagnostic
- services use this value to compare lifestyles with each other to determine lifestyle
- misconfigurations.
+ Diagnostic result that warns about when a multiple registrations map to the same implementation type
+ and lifestyle, which might cause multiple instances to be created during the lifespan of that lifestyle.
+ For more information, see: https://simpleinjector.org/diaal.
- The representing the length of this lifestyle.
-
+
+ Gets the lifestyles that causes the registrations to be conflicting.
+ instances.
+
+
+ Gets the implementation type that the affected registrations map to.
+ A .
+
+
+ Gets the registration that caused this warning.
+ /// An .
+
+
- The hybrid lifestyle allows mixing two lifestyles in a single registration. The hybrid will use
- the in case its
- GetCurrentScope method returns a
- scope; otherwise the is used. The hybrid lifestyle will
- redirect the creation of the instance to the selected lifestyle. By nesting hybrid lifestyles,
- any number of lifestyles can be mixed.
+ Gets the list of registrations that are in conflict with the .
- The lifestyle to use when its
- GetCurrentScope method returns a
- scope..
- The lifestyle to use when the
- GetCurrentScope method of the
- argument returns null.
- A new hybrid lifestyle that wraps the supplied lifestyles.
- Thrown when one of the supplied arguments is a null
- reference (Nothing in VB).
-
-
- The following example shows the creation of a HybridLifestyle that mixes an
- ThreadScopedLifestyle and Transient:
-
- (hybridLifestyle);
- container.Register(hybridLifestyle);
- ]]>
-
- Hybrid lifestyles can be nested:
-
-
-
- The mixedScopeLifestyle now mixed three lifestyles: Web Request, Thread Scoped and
- Transient.
-
-
+ A list of instances.
-
+
- The hybrid lifestyle allows mixing two lifestyles in a single registration. The hybrid will use
- the in case its
- GetCurrentScope method returns a
- scope; otherwise the is used. The hybrid lifestyle will
- redirect the creation of the instance to the selected lifestyle. By nesting hybrid lifestyles,
- any number of lifestyles can be mixed.
+ Entry point for doing diagnostic analysis on instances.
- The lifestyle to use when its
- GetCurrentScope method returns a
- scope..
- The lifestyle to use when the
- GetCurrentScope method of the
- argument returns null.
- A new hybrid lifestyle that wraps the supplied lifestyles.
- Thrown when one of the supplied arguments is a null
- reference (Nothing in VB).
-
- The following example shows the creation of a HybridLifestyle that mixes an
- ThreadScopedLifestyle and Transient:
-
- (hybridLifestyle);
- container.Register(hybridLifestyle);
- ]]>
-
- Hybrid lifestyles can be nested:
-
+ The following example shows the usage of the Analyzer class:
-
- The mixedScopeLifestyle now mixed three lifestyles: Web Request, Thread Scoped and
- Transient.
-
-
+
- The hybrid lifestyle allows mixing two lifestyles in a single registration. Based on the supplied
- delegate the hybrid lifestyle will redirect the creation of
- the instance to the correct lifestyle. The result of the
- delegate will not be cached; it is invoked each time an instance is requested or injected. By
- nesting hybrid lifestyles, any number of lifestyles can be mixed.
+ Analyzes the supplied instance.
- The delegate that determines which
- lifestyle should be used. The will be used if true is
- returned; the otherwise. This delegate will be called every
- time an instance needs to be resolved or injected.
- The lifestyle to use when
- returns true.
- The lifestyle to use when
- returns false.
- A new hybrid lifestyle that wraps the supplied lifestyles.
- Thrown when one of the supplied arguments is a null
- reference (Nothing in VB).
-
-
- The following example shows the creation of a HybridLifestyle that mixes an
- WebRequestLifestyle and ThreadScopedLifestyle:
-
- HttpContext.Current != null,
- new WebRequestLifestyle(),
- new ThreadScopedLifestyle());
-
- // The created lifestyle can be reused for many registrations.
- container.Register(mixedScopeLifestyle);
- container.Register(mixedScopeLifestyle);
- ]]>
-
- Hybrid lifestyles can be nested:
-
- lifestyle.GetCurrentScope(container) != null,
- lifestyle,
- Lifestyle.Transient);
-
- var mixedScopeLifestyle = Lifestyle.CreateHybrid(
- () => HttpContext.Current != null,
- new WebRequestLifestyle(),
- mixedLifetimeTransientLifestyle);
- ]]>
-
- The mixedScopeLifestyle now mixed three lifestyles: Web Request, Lifetime Scope and
- Transient.
-
-
+ The container instance to analyze.
+ A collection of sub types that describe the diagnostic
+ warnings and messages.
-
+
- The hybrid lifestyle allows mixing two lifestyles in a single registration. Based on the supplied
- delegate the hybrid lifestyle will redirect the creation of
- the instance to the correct lifestyle. The result of the
- delegate will not be cached; it is invoked each time an instance is requested or injected. By
- nesting hybrid lifestyles, any number of lifestyles can be mixed.
+ Diagnostic result for a warning about a concrete type that was not registered explicitly and was not
+ resolved using unregistered type resolution, but was created by the container using the transient
+ lifestyle.
+ For more information, see: https://simpleinjector.org/diaut.
- The delegate that determines which
- lifestyle should be used. The will be used if true is
- returned; the otherwise. This delegate will be called every
- time an instance needs to be resolved or injected.
- The scoped lifestyle to use when
- returns true.
- The scoped lifestyle to use when
- returns false.
- A new scoped hybrid lifestyle that wraps the supplied lifestyles.
- Thrown when one of the supplied arguments is a null
- reference (Nothing in VB).
-
-
- The following example shows the creation of a HybridLifestyle that mixes an
- WebRequestLifestyle and ThreadScopedLifestyle:
-
- HttpContext.Current != null,
- new WebRequestLifestyle(),
- new ThreadScopedLifestyle());
-
- // The created lifestyle can be reused for many registrations.
- container.Register(mixedScopeLifestyle);
- container.Register(mixedScopeLifestyle);
- ]]>
-
-
+
+ Gets a collection of instances that describe all
+ container-registered dependencies for the given component.
+ List of objects.
+
+
- Creates a custom lifestyle using the supplied delegate.
+ A hierarchical group of .
-
- The supplied will be called just once per registered
- service. The supplied will be called by the framework
- when the type is resolved for the first time, and the framework will supply the factory with a
- Func<object> for creating new (transient) instances of that type (that might
- have been intercepted and
- initializers might have been applied).
- It is the job of the to return a Func<object>
- that applies the proper caching. The Func<object> that is returned by the
- will be stored for that registration (every
- registration will store its own Func<object> delegate) and this delegate will be
- called every time the service is resolved (by calling
- container.GetInstance<TService> or when that service is injected into another
- type).
-
- The name of the lifestyle to create. The name is used to display the lifestyle
- in the debugger.
- A factory delegate that takes a Func<object> delegate
- that will produce a transient instance and returns a delegate that returns cached instances.
- A new .
- Thrown when one of the arguments is a null reference
- (Nothing in VB).
- Thrown when is an empty string.
-
- The following example shows the creation of a lifestyle that caches registered instances for 10
- minutes:
-
- {
- TimeSpan timeout = TimeSpan.FromMinutes(10);
- var syncRoot = new object();
- var expirationTime = DateTime.MinValue;
- object instance = null;
-
- // If the application has multiple registrations using this lifestyle, each registration
- // will get its own Func
-
-
+
+
+ Gets the base that describes the service types of its
+ . The value often be either (in case this is a
+ root group) or a partial generic type to allow hierarchical grouping of a large number of related
+ generic types.
+
+ The .
+
+
+ Gets the friendly name of the group.
+ The name.
+
+
+ Gets the description of the group.
+ The description.
+
+
+ Gets the diagnostic type of all grouped instances.
+ The .
+
+
+ Gets the parent or null (Nothing in VB) when this is the
+ root group.
+ The .
+
+
+ Gets the collection of child s.
+ A collection of elements.
+
+
+ Gets the collection of instances.
+ /// A collection of elements.
+
+
+
+ Base class for types that hold information about a single diagnostic message or warning for a
+ particular type or part of the configuration.
+
+
+
+ Gets the severity of this result.
+ The .
+
+
+ Gets the diagnostic type of this result.
+ The .
+
+
+ Gets the service type to which this warning is related.
+ A .
+
+
+ Gets the description of the diagnostic result.
+ A with the description.
+
+
+ Gets the documentation URL of the diagnostic result.
+ A with the URL.
+
+
+ Gets the hierarchical group to which this diagnostic result belongs.
+ The .
+
+
- Creates a new instance for the given
- that will create new instances of specified with the
- caching as specified by this lifestyle.
+ Specifies the list of severity levels that diagnostic results can have.
- The interface or base type that can be used to retrieve the instances.
- The concrete type that will be created.
- The instance for which a
- must be created.
- A new instance.
- Thrown when is a null
- reference (Nothing in VB).
-
+
+ Information messages and tips about the configuration.
+
+
+ Warning messages that are likely to cause problems in your application.
+
+
- Creates a new instance for the given
- that will create new instances of specified caching as
- specified by this lifestyle.
+ Specifies the list of diagnostic types that are currently supported by the diagnostic
+ . Note that new diagnostic types might be added in future versions.
+ For more information, please read the
+ Diagnosing your configuration using the Diagnostic
+ Services wiki documentation.
- The interface or base type that can be used to retrieve the instances.
- The concrete type that will be created.
- The instance for which a
- must be created.
- A new instance.
- Thrown when either or
- are null references (Nothing in VB).
-
+
- Creates a new instance for the given
- that will create new instances instance using the supplied
- with the caching as specified by this lifestyle.
+ Diagnostic type that warns about
+ a concrete type that was not registered explicitly and was not resolved using unregistered type
+ resolution, but was created by the container using the transient lifestyle.
+ For more information, see: https://simpleinjector.org/diaut.
- The interface or base type that can be used to retrieve the instances.
- A delegate that will create a new instance of
- every time it is called.
- The instance for which a
- must be created.
- A new instance.
- Thrown when either or
- are null references (Nothing in VB).
-
+
- Creates a new instance for the given
- that will create new instances of specified with the
- caching as specified by this lifestyle.
+ Diagnostic type that warns when a
+ component depends on a service with a lifestyle that is shorter than that of the component.
+ For more information, see: https://simpleinjector.org/dialm.
- The interface or base type that can be used to retrieve the instances.
- The concrete type that will be registered.
- The instance for which a
- must be created.
- A new instance.
- Thrown when on of the supplied arguments is a null
- reference (Nothing in VB).
-
+
- Creates a new instance defining the creation of the
- specified with the caching as specified by this lifestyle,
- or returns an already created instance for this container + lifestyle
- + type combination.
+ Diagnostic type that warns when a
+ component depends on an unregistered concrete type and this concrete type has a lifestyle that is
+ different than the lifestyle of an explicitly registered type that uses this concrete type as its
+ implementation.
+ For more information, see: https://simpleinjector.org/diasc.
- The concrete type that will be registered.
- The instance for which a
- must be created.
- A new or cached instance.
- Thrown when is a null
- reference (Nothing in VB).
-
+
- This overload has been deprecated. Please call
- instead.
+ Diagnostic type that warns when a component depends on (too) many services.
+ For more information, see: https://simpleinjector.org/diasr.
- The interface or base type that can be used to retrieve the instances.
- The concrete type that will be created.
- The instance for which a
- must be created.
- A new instance.
- Thrown when is a null
- reference (Nothing in VB).
-
+
- Creates a new instance defining the creation of the
- specified using the supplied
- with the caching as specified by this lifestyle.
+ Diagnostic type that warns when multiple registrations map to the same component and
+ lifestyle, which might cause multiple instances to be created during the lifespan of that lifestyle.
+ For more information, see: https://simpleinjector.org/diatl.
- The interface or base type that can be used to retrieve the instances.
- A delegate that will create a new instance of
- every time it is called.
- The instance for which a
- must be created.
- A new instance.
- Thrown when either or
- are null references (Nothing in VB).
-
+
- Creates a new instance defining the creation of the
- specified with the caching as specified by this lifestyle,
- or returns an already created instance for this container + lifestyle
- + type combination.
- This method might fail when run in a partial trust sandbox when
- is an internal type.
+ Diagnostic type that warns when a component is registered as transient, while implementing
+ .
+ For more information, see: https://simpleinjector.org/diadt.
- The concrete type that will be registered.
- The instance for which a
- must be created.
- A new instance.
- Thrown when on of the supplied arguments is a null
- reference (Nothing in VB).
-
+
- This overload has been deprecated. Please call
- instead.
+ Diagnostic type that warns when multiple registrations exist that map to the same component but
+ with different lifestyles, which will cause the component to be cached in different -possibly
+ incompatible- ways.
+ For more information, see: https://simpleinjector.org/diaal.
- The interface or base type that can be used to retrieve the instances.
- The concrete type that will be registered.
- The instance for which a
- must be created.
- A new instance.
- Thrown when on of the supplied arguments is a null
- reference (Nothing in VB).
-
+
- Creates a new instance defining the creation of the
- specified using the supplied
- with the caching as specified by this lifestyle.
+ Diagnostic result for a warning about a component that is registered as transient, but implements
+ .
+ For more information, see: https://simpleinjector.org/diadt.
- The interface or base type that can be used to retrieve the instances.
- The delegate that will be responsible for creating new instances.
- The instance for which a
- must be created.
- A new instance.
- Thrown when on of the supplied arguments is a null
- reference (Nothing in VB).
-
+
+ Gets the object that describes the relationship between the component and its dependency.
+ A instance.
+
+
- When overridden in a derived class,
- creates a new instance defining the creation of the
- specified with the caching as specified by this lifestyle.
+ Diagnostic result for a warning about a
+ component that depends on a service with a lifestyle that is shorter than that of the component.
+ For more information, see: https://simpleinjector.org/dialm.
- The concrete type that will be registered.
- The instance for which a
- must be created.
- A new instance.
-
- If you are implementing your own lifestyle, override this method to implement the code necessary
- to create and return a new . Note that you should always create
- a new instance. They should never be cached.
-
-
+
+ Gets the object that describes the relationship between the component and its dependency.
+ A instance.
+
+
- When overridden in a derived class,
- creates a new instance defining the creation of the
- specified using the supplied
- with the caching as specified by this lifestyle.
+ Diagnostic result that warns about a
+ component that depends on an unregistered concrete type and this concrete type has a lifestyle that is
+ different than the lifestyle of an explicitly registered type that uses this concrete type as its
+ implementation.
+ For more information, see: https://simpleinjector.org/diasc.
- The interface or base type that can be used to retrieve the instances.
- A delegate that will create a new instance of
- every time it is called.
- The instance for which a
- must be created.
- A new instance.
-
- If you are implementing your own lifestyle, override this method to implement the code necessary
- to create and return a new . Note that you should always create
- a new instance. They should never be cached.
-
-
+
+ Gets the instance that describes the current relationship between the checked component
+ and the short-circuited dependency.
+ The .
+
+
- An instance of this type will be supplied to the
- delegate that is that is supplied to the
- RegisterConditional
- overload that takes this delegate. This type contains information about the open generic service that
- is about to be created and it allows the user to examine the given instance to decide whether this
- implementation should be created or not.
+ Gets the collection of registrations that have the component's current dependency as
+ implementation type, but have a lifestyle that is different than the current dependency.
+
+ A collection of instances.
+
+
+
+ Diagnostic result that warns about a component that depends on (too) many services.
+ For more information, see: https://simpleinjector.org/diasr.
+
+
+
+ Gets the created type.
+ A .
+
+
+ Gets the list of registrations that are dependencies of the .
+ A collection of instances.
+
+
+
+ Diagnostic result that warns about when a multiple registrations map to the same implementation type
+ and lifestyle, which might cause multiple instances to be created during the lifespan of that lifestyle.
+ For more information, see: https://simpleinjector.org/diatl.
-
- Please see the
- Register
- method for more information.
-
-
- Gets the closed generic service type that is to be created.
- The closed generic service type.
+
+ Gets the lifestyle on which instances are torn.
+ A .
-
- Gets the closed generic implementation type that will be created by the container.
- The implementation type.
+
+ Gets the implementation type that the affected registrations map to.
+ A .
-
- Gets a value indicating whether a previous Register registration has already
- been applied for the given .
- The indication whether the event has been handled.
+
+ Gets the list of registrations that are affected by this warning.
+ A list of instances.
-
+
- Gets the contextual information of the consuming component that directly depends on the resolved
- service. This property will return null in case the service is resolved directly from the container.
+ Thrown by the container in case of a diagnostic error.
- The or null.
-
+
- A Registration implements lifestyle based caching for a single service and allows building an
- that describes the creation of the service.
+ Initializes a new instance of the class.
-
- implementations create a new Registration instance for each registered
- service type. s returned from the
- BuildExpression method can be
- intercepted by any event registered with , have
- initializers
- applied, and the caching particular to its lifestyle have been applied. Interception using the
- Container.ExpressionBuilt will not
- be applied in the Registration, but will be applied in .
-
- See the documentation for an example.
-
-
+
- Initializes a new instance of the class.
+ Initializes a new instance of the class with a specified error
+ message.
- The this that created this registration.
- The instance for this registration.
- Thrown when one of the supplied arguments is a null
- reference (Nothing in VB).
-
-
- Gets the type that this instance will create.
- The type that this instance will create.
-
-
- Gets the this that created this registration.
- The this that created this registration.
-
-
- Gets the instance for this registration.
- The instance for this registration.
+ The message that describes the error.
-
- Gets or sets a value indicating whether this registration object contains a user
- supplied instanceCreator factory delegate.
+
+
+ Initializes a new instance of the class with a specified error
+ message.
+
+ The list of errors.
-
+
- Builds a new with the correct caching (according to the specifications of
- its ) applied.
+ Initializes a new instance of the class with a specified error
+ message and a reference to the inner exception that is the cause of this exception.
- An .
+
+ The error message that explains the reason for the exception.
+
+
+ The exception that is the cause of the current exception, or a null reference (Nothing in Visual
+ Basic) if no inner exception is specified.
+
-
+
- Gets the list of instances. Note that the list is only available
- after calling .
+ Initializes a new instance of the class with serialized data.
- A new array containing the instances.
+
+ The that holds the serialized object data about the exception
+ being thrown.
+
+
+ The that contains contextual information about the source or
+ destination.
+
+
+ The parameter is null.
+
+
+ The class name is null or hresult is zero (0).
+
-
+
+ Gets the list of instances.
+ A list of instances.
+
+
- Initializes an already created instance and applies properties and initializers to that instance.
+ Provides data for and interaction with the
+ ExpressionBuilding event of
+ the . An observer can change the
+ property to change the component that is
+ currently being built.
-
- This method is especially useful in integration scenarios where the given platform is in control
- of creating certain types. By passing the instance created by the platform to this method, the
- container is still able to apply any properties (as defined using a custom
- ) and by applying any initializers.
-
- The instance to initialize.
- Thrown when is a null reference
- (Nothing in VB).
- Thrown when the supplied is not
- of type .
-
+
+ Gets the registered service type that is currently requested.
+ The registered service type that is currently requested.
+
+
- Suppressing the supplied for the given registration.
+ Gets the type that is known to be returned by the
+ Expression (most often the implementation
+ type used in the Register call). This type will be a derivative of
+ RegisteredServiceType (or
+ or RegisteredServiceType itself). If the Expression is changed, the new expression
+ must also return an instance of type KnownImplementationType or a sub type.
+ This information must be described in the new Expression.
- The .
- The justification of why the warning must be suppressed.
- Thrown when is a null
- reference.
- Thrown when either is an
- empty string or when is not a valid value of .
-
+ A .
-
+
+ Gets the lifestyle for the component that is currently being built.
+ The .
+
+
+ Gets or sets the currently registered
+ Expression.
+ The current registration.
+ Thrown when the supplied value is a null reference.
+
+
- Builds a delegate for the creation of the
- using the supplied . The returned might
- be intercepted by a
- Container.ExpressionBuilding event,
- and the will have been wrapped with a delegate that executes the
- registered initializers
- that are applicable to the given (if any).
+ Gets the collection of currently known relationships. This information is used by the Diagnostics
+ Debug View. Change the contents of this collection to represent the changes made to the
+ Expression property (if any). This allows
+ the Diagnostics Debug View to analyze those new relationships as well.
- The interface or base type that can be used to retrieve instances.
-
- The delegate supplied by the user that allows building or creating new instances.
- A delegate.
- Thrown when one of the arguments is a null reference.
+ The collection of instances.
-
+
- Builds a delegate for the creation of .
- The returned might be intercepted by a
- Container.ExpressionBuilding event,
- and the creation of the will have been wrapped with a
- delegate that executes the registered
- initializers
- that are applicable to the given (if any).
+ Provides data for and interaction with the
+ ExpressionBuilt event of
+ the . An observer can change the
+ property to change the component that is currently
+ being built.
- A delegate.
- Thrown when one of the arguments is a null reference.
-
+
+ Initializes a new instance of the class.
+ Type of the registered service.
+ The registered expression.
+
+
+ Gets the registered service type that is currently requested.
+ The registered service type that is currently requested.
+
+
+ Gets or sets the currently registered
+ Expression.
+ The current registration.
+ Thrown when the supplied value is a null reference.
+
+
+ Gets or sets the current lifestyle of the registration.
+ The original lifestyle of the registration.
+
+
- Builds an that describes the creation of the
- using the supplied . The returned might
- be intercepted by a
- Container.ExpressionBuilding event,
- and the will have been wrapped with a delegate that executes the
- registered initializers that are
- applicable to the given (if any).
+ Gets the collection of currently known relationships. This information is used by the Diagnostics
+ Debug View. Change the contents of this collection to represent the changes made to the
+ Expression property (if any). This allows
+ the Diagnostics Debug View to analyze those new relationships as well.
- The interface or base type that can be used to retrieve instances.
-
- The delegate supplied by the user that allows building or creating new instances.
- An .
- Thrown when one of the arguments is a null reference.
+ The collection of instances.
-
+
- Builds an that describes the creation of .
- The returned might be intercepted
- by a Container.ExpressionBuilding
- event, and the creation of the will have been wrapped with
- a delegate that executes the registered
- initializers that are applicable
- to the InstanceProducer's ServiceType (if any).
+ Helper methods for the container.
+
+
+
+
+ Contains contextual information about the direct consumer for which the given dependency is injected
+ into.
- An .
- Thrown when one of the arguments is a null reference.
-
- Implements a cache for implementations.
-
- is thread-safe can be used over multiple threads concurrently, but note that the
- cached instances might not be thread-safe.
-
+
+ Initializes a new instance of the class.
+ The constructor parameter for the created component.
-
- Initializes a new instance of the class.
+
+ Initializes a new instance of the class.
+ The implementation type of the consumer of the component that should be created.
+ The property for the created component.
-
- Initializes a new instance of the class.
- The container instance that the scope belongs to.
+
+ Gets the service type of the consumer of the component that should be created.
+ The closed generic service type.
-
- Gets the container instance that this scope belongs to.
- The instance.
+
+ Gets the implementation type of the consumer of the component that should be created.
+ The implementation type.
-
+
- Allows registering an delegate that will be called when the scope ends,
- but before the scope disposes any instances.
+ Gets the information about the consumer's target in which the dependency is injected. The target
+ can be either a property or a constructor parameter.
-
- During the call to all registered delegates are
- processed in the order of registration. Do note that registered actions are not guaranteed
- to run. In case an exception is thrown during the call to , the
- will stop running any actions that might not have been invoked at that point.
- Instances that are registered for disposal using on the other
- hand, are guaranteed to be disposed. Note that registered actions won't be invoked during a call
- to .
-
- The delegate to run when the scope ends.
- Thrown when one of the arguments is a null reference
- (Nothing in VB).
- Thrown when the scope has been disposed.
+ The for this context.
-
-
- Adds the to the list of items that will get disposed when the
- scope ends.
-
-
- Instances that are registered for disposal, will be disposed in opposite order of registration and
- they are guaranteed to be disposed when is called (even when
- exceptions are thrown). This mimics the behavior of the C# and VB using statements,
- where the method is called inside the finally block.
-
- The instance that should be disposed when the scope ends.
- Thrown when one of the arguments is a null reference
- (Nothing in VB).
- Thrown when the scope has been disposed.
+
+ Returns a string that represents the .
+ A string.
-
+
- Retrieves an item from the scope stored by the given or null when no
- item is stored by that key.
+ Discovers the attributes of the code element (a property or parameter) where a dependency will be
+ injected into, and provides access to its meta data.
-
- Thread-safety: Calls to this method are thread-safe, but users should take proper
- percussions when they call both GetItem and .
-
- The key of the item to retrieve.
- The stored item or null (Nothing in VB).
- Thrown when one of the supplied arguments is a null
- reference (Nothing in VB).
-
- Stores an item by the given in the scope.
-
- Thread-safety: Calls to this method are thread-safe, but users should take proper
- percussions when they call both and SetItem.
-
- The key of the item to insert or override.
- The actual item. May be null.
- Thrown when paramref name="key"/> is a null reference
- (Nothing in VB).
+
+ Gets the constructor argument of the consumer of the component where the dependency will be
+ injected into. The property can return null.
+ The or null when the dependency is injected into a property.
-
- Releases all instances that are cached by the object.
+
+ Gets the property of the consumer of the component where the dependency will be injected into.
+ The property can return null.
+ The or null when the dependency is injected into a constructor
+ argument instead.
-
+
+ Gets the name of the target.
+ A string containing the name of the target.
+
+
+ Gets the type of the target.
+ A containing the type of the target.
+
+
+ Gets the member of the target. This is either the constructor of the parameter, or in
+ case the target is a property, the property itself will be returned.
+ A containing the type of the target.
+
+
- Releases all instances that are cached by the object.
+ Returns an array of all of the custom attributes defined on either the or
+ the , excluding named attributes, or an empty array if there are no custom
+ attributes.
- False when only unmanaged resources should be released.
+ When true, look up the hierarchy chain for the inherited custom attribute.
+ An array of Objects representing custom attributes, or an empty array.
+ The custom attribute type cannot be loaded.
+ There is more than one attribute of type attributeType
+ defined on this member.
-
+
- Base class for scoped lifestyles. A scoped lifestyle caches instances for the duration of an implicitly
- or explicitly defined scope. Such scope can be an (implicitly defined) web request or an explicitly
- defined Lifetime Scope. The lifetime of instances registered with a scoped lifestyle is always equal
- or bigger than one-instance-per-object-graph. In other words, a call to GetInstance() will never create
- more than one instance of such registered type.
+ Returns an array of custom attributes defined on either the or
+ the , identified by type, or an empty array if there are no custom
+ attributes of that type.
+ The type of the custom attributes.
+ When true, look up the hierarchy chain for the inherited custom attribute.
+ An array of Objects representing custom attributes, or an empty array.
+ The custom attribute type cannot be loaded.
+ Thrown when attributeType is null.
-
- Initializes a new instance of the class.
- The user friendly name of this lifestyle.
- Thrown when is null (Nothing in VB)
- or an empty string.
-
-
- Initializes a new instance of the class.
- The user friendly name of this lifestyle.
- Signals the lifestyle whether instances should be
- disposed or not.
- Thrown when is null (Nothing in VB)
- or an empty string.
-
-
- Gets the length of the lifestyle.
- The representing the length of this lifestyle.
+
+
+ Indicates whether one or more instance of attributeType is defined on this either the
+ or the .
+
+ The type of the custom attributes.
+ When true, look up the hierarchy chain for the inherited custom attribute.
+ true if the attributeType is defined on this member; false otherwise.
-
+
- Allows registering an delegate that will be called when the scope ends,
- but before the scope disposes any instances.
+ Retrieves a custom attribute of a specified type that is applied to a specified parameter.
-
- During the call to all registered delegates are
- processed in the order of registration. Do note that registered actions are not guaranteed
- to run. In case an exception is thrown during the call to , the
- will stop running any actions that might not have been invoked at that point.
- Instances that are registered for disposal using on the other
- hand, are guaranteed to be disposed. Note that registered actions won't be invoked during a call
- to .
-
- The instance.
- The delegate to run when the scope ends.
- Thrown when one of the arguments is a null reference
- (Nothing in VB).
- Will be thrown when there is currently no active
- scope for the supplied .
+ The parameter to inspect.
+ A custom attribute that matches T, or null if no such attribute is found.
-
+
- Adds the to the list of items that will get disposed when the
- scope ends.
+ Retrieves a custom attribute of a specified type that is applied to a specified parameter, and
+ optionally inspects the ancestors of that parameter.
- The instance.
- The instance that should be disposed when the scope ends.
- Thrown when one of the arguments is a null reference
- (Nothing in VB).
- Will be thrown when there is currently no active
- scope for the supplied .
+ The parameter to inspect.The parameter to inspect.
+ True to inspect the ancestors of element; otherwise, false.
+ A custom attribute that matches T, or null if no such attribute is found.
-
+
- Returns the current for this lifestyle and the given
- , or null when this method is executed outside the context of a scope.
+ Retrieves a custom attribute of a specified type that is applied to a specified parameter.
- The container instance that is related to the scope to return.
- A instance or null when there is no scope active in this context.
+ The type of attribute to search for.
+ A custom attribute that matches attributeType, or null if no such attribute is found.
-
+
- Creates a delegate that upon invocation return the current for this
- lifestyle and the given , or null when the delegate is executed outside
- the context of such scope.
+ Retrieves a custom attribute of a specified type that is applied to a specified parameter, and
+ optionally inspects the ancestors of that parameter.
- The container for which the delegate gets created.
- A delegate. This method should never return null.
+ The type of attribute to search for.
+ True to inspect the ancestors of element; otherwise, false.
+ A custom attribute matching attributeType, or null if no such attribute is found.
-
+
- Creates a new instance defining the creation of the
- specified using the supplied
- with the caching as specified by this lifestyle.
+ Retrieves a collection of custom attributes of a specified type that are applied to a specified parameter.
- The interface or base type that can be used to retrieve the instances.
- A delegate that will create a new instance of
- every time it is called.
- The instance for which a
- must be created.
- A new instance.
+ The type of attribute to search for.
+ A collection of the custom attributes that are applied to element and that match T, or
+ an empty collection if no such attributes exist.
-
+
- Creates a new instance defining the creation of the
- specified with the caching as specified by this lifestyle.
+ Retrieves a collection of custom attributes of a specified type that are applied to a specified
+ parameter, and optionally inspects the ancestors of that parameter.
- The concrete type that will be registered.
- The instance for which a
- must be created.
- A new instance.
+ The type of attribute to search for.
+ True to inspect the ancestors of element; otherwise, false.
+ A collection of the custom attributes that are applied to element and that match T, or an
+ empty collection if no such attributes exist.
-
+
- Returns the current for this lifestyle and the given
- , or null when this method is executed outside the context of a scope.
+ Produces instances for a given registration. Instances of this type are generally created by the
+ container when calling one of the Register overloads. Instances can be retrieved by calling
+ GetCurrentRegistrations() or
+ GetRegistration(Type, bool).
- By default, this method calls the method and invokes the
- returned delegate. This method can be overridden to provide an optimized way for getting the
- current scope.
+ The Register method overloads create InstanceProducer instances internally, but
+ InstanceProducers can be created manually to implement special scenarios. An
+ InstanceProducer wraps instance. The Registration builds an
+ that describes the intend to create the instance according to a certain
+ lifestyle. The InstanceProducer on the other hand transforms this Expression to a
+ delegate and allows the actual instance to be created. A Registration itself can't create any
+ instance. The InsanceProducer allows intercepting created instances by hooking onto the
+ Container.ExpressionBuilt event. The
+ RegisterDecorator methods for
+ instance work by hooking onto the ExpressionBuilt event and allow wrapping the returned instance
+ with a decorator.
- The container instance that is related to the scope to return.
- A instance or null when there is no scope active in this context.
+
+ The following example shows the creation of two different InstanceProducer instances that wrap
+ the same Registration instance. Since the Registration is created using the
+ Singleton lifestyle, both producers will return
+ the same instance. The InstanceProducer for the Interface1 however, will wrap that
+ instance in a (transient) Interface1Decorator.
+ (container);
+
+ var producer1 = new InstanceProducer(typeof(Interface1), registration);
+ var producer2 = new InstanceProducer(typeof(Interface2), registration);
+
+ container.RegisterDecorator(typeof(Interface1), typeof(Interface1Decorator));
+
+ var instance1 = (Interface1)producer1.GetInstance();
+ var instance2 = (Interface2)producer2.GetInstance();
+
+ Assert.IsInstanceOfType(instance1, typeof(Interface1Decorator));
+ Assert.IsInstanceOfType(instance2, typeof(ServiceImpl));
+
+ Assert.AreSame(((Interface1Decorator)instance1).DecoratedInstance, instance2);
+ ]]>
+
-
- Internal helper for string resources.
+
+ Initializes a new instance of the class.
+ The service type for which this instance is created.
+ The .
-
+
- Contains contextual information for creating an implementation type.
+ Gets the for this registration. The returned lifestyle can differ from the
+ lifestyle that is used during the registration. This can happen for instance when the registration
+ is changed by an ExpressionBuilt
+ registration or gets decorated.
-
- Please see the
- Register
- method for more information.
-
+ The for this registration.
-
- Gets the closed generic service type that is to be created.
- The closed generic service type.
+
+ Gets the service type for which this producer produces instances.
+ A instance.
-
-
- Gets the contextual information of the consuming component that directly depends on the resolved
- service. This property will return null in case the service is resolved directly from the container.
-
- The or null.
+
+ Gets the instance for this instance.
+ The .
-
+
- Returns a list of base types and interfaces of implementationType that either
- equal to serviceType or are closed or partially closed version of serviceType (in case
- serviceType itself is generic).
- So:
- -in case serviceType is non generic, only serviceType will be returned.
- -If implementationType is open generic, serviceType will be returned (or a partially closed
- version of serviceType is returned).
- -If serviceType is generic and implementationType is not, a closed version of serviceType will
- be returned.
- -If implementationType implements multiple (partially) closed versions of serviceType, all those
- (partially) closed versions will be returned.
+ Creates a new based on the given
+ and where the will be used as-is;
+ no interception (using ExpressionBuilt) such as
+ decorators will be applied.
- The (open generic) service type to match.
- The implementationType to search.
- A list of types.
+ The service type for which this instance is created.
+ The expression that describes the instance to be produced.
+ The instance for this registration.
+ A new that describes the expression.
-
- Useful extensions on .
+
+ Produces an instance.
+ An instance. Will never return null.
+ When the instance could not be retrieved or is null.
-
+
- Builds an easy to read type name. Namespaces will be omitted, and generic types will be displayed
- in a C#-like syntax. Ideal for reporting type names in exception messages.
+ Builds an expression that expresses the intent to get an instance by the current producer. A call
+ to this method locks the container. No new registrations can't be made after a call to this method.
- The type to convert.
- A human-readable string representation of that type.
- Thrown when the supplied argument is a null reference.
+ An Expression.
-
+
- Returns true is there is a closed version of the supplied
- that is assignable from the current . This method returns true when either
- itself, one of its base classes or one of its implemented interfaces is a
- closed version of ; otherwise false.
+ Gets the collection of relationships for this instance that the container knows about.
+ This includes relationships between the registered type and its dependencies and relationships
+ between applied decorators and their dependencies. Note that types that are not newed up by the
+ container and properties that are injected inside a custom delegate that is registered using the
+ RegisterInitializer
+ method are unknown to the container and are not returned from this method.
+ Also note that this method will return an empty collection when called before the
+ registered type is requested from the container (or before
+ Verify is called).
- The type to check.
- The generic type definition to match.
- True when type is assignable; otherwise false.
+ An array of instances.
-
+
- Gets the single closed version of that the current
- is assignable from. In case none or multiple matching closed types are
- found, and exception is thrown. Example: When is a type
- class X : IX<int>, IFoo<string> and
- is type IX<T>: this method will return type IX<int>.
+ Builds a string representation of the object graph with the current instance as root of the
+ graph.
- The type to check.
- The generic type definition to match.
- The matching closed type.
- Thrown when one of the arguments is a null reference.
- Thrown when is not
- a generic type or when none of the base classes or implemented interfaces of
- Thrown when multiple matching closed generic types
- are found.
+ A string representation of the object graph.
+ Thrown when this method is called before
+ or have been called. These calls can be
+ done directly and explicitly by the user on this instance, indirectly by calling
+ or on an instance that depends on this
+ instance, or by calling Verify on the container.
+
-
+
- Gets the list of closed versions of that the current
- is assignable from. Example: When is a type
- class X : IX<int>, IFoo<string> and
- is type IX<T>: this method will return type IX<int>.
+ Produces instances for a given registration. Instances of this type are generally created by the
+ container when calling one of the Register overloads. Instances can be retrieved by calling
+ or .
- The type to check.
- The generic type definition to match.
- A list of matching closed generic types.
+ The service type.
-
-
- Defines options to control the types returned from the
- GetTypesToRegister
- method. For a type to be returned, it should match all the conditions described by the class's
- properties. In other words, in case the searched assembly contains a generic type, that is both a
- decorator and a composite, it will only be returned by GetTypesToRegister in case both
- , and
- are set to true.
-
+
+ Initializes a new instance of the class.
+ The .
-
- Initializes a new instance of the class.
+
+ Produces an instance.
+ An instance. Will never return null.
+ When the instance could not be retrieved or is null.
-
+
- Gets or sets a value indicating whether decorator types should be included in the result. The default
- value of this property is false. A type is considered a decorator if the type's constructor
- contains a parameter of the type that exactly matches the serviceType argument,
- supplied to the
- GetTypesToRegister
- method, or when there is a argument where T matches the
- serviceType argument.
+ A map containing a generic argument (such as T) and the concrete type (such as Int32) that it
+ represents.
- A boolean.
-
+
+ Implements equality. Needed for doing LINQ distinct operations.
+ The other to compare to.
+ True or false.
+
+
+ Overrides the default hash code. Needed for doing LINQ distinct operations.
+ An 32 bit integer.
+
+
- Gets or sets a value indicating whether generic type definitions (types that have
- Type.IsGenericTypeDefinition
- set to true)
- should be included in the result. The default value for this property is false.
+ Container controlled collections can be supplied with both Type objects or direct Registration
+ instances.
- A boolean.
-
+
+ Will never be null. Can be open-generic.
+
+
+ Can be null.
+
+
- Gets or sets a value indicating whether composite types should be included in the result. The default
- value of this property is true. A type is considered a composite if the type's constructor
- contains a parameter of IEnumerable<T>, ICollection<T>,
- IList<T>, IReadOnlyCollection<T>,
- IReadOnlyList<T> or T[] (array of T), where T
- exactly matches the serviceType argument, supplied to the
- GetTypesToRegister
- method.
+ Gets a message that describes the current exception.
- A boolean.
+ The error message that explains the reason for the exception, or an empty string("").
-
+
- Provides data for and interaction with the
- ResolveUnregisteredType event of
- the . An observer can check the
- to see whether the unregistered type can be handled. The
- method can be called to register a delegate
- that allows creation of instances of the unregistered for this and future requests.
+ Allows verifying whether a given type has a direct or indirect dependency on itself. Verifying is done
+ by preventing recursive calls to an InstanceProducer. A CyclicDependencyValidator instance checks a
+ single InstanceProducer and therefore a single service type.
-
- Gets the unregistered service type that is currently requested.
- The unregistered service type that is currently requested.
-
-
+
- Gets a value indicating whether the event represented by this instance has been handled.
- This property will return true when has been called on
- this instance.
+ Allows retrieving the concrete types of the generic type arguments of that must be used to create a
+ closed generic implementation of a given open generic implementation, based on on the concrete
+ arguments of the given closed base type.
- The indication whether the event has been handled.
-
+
- Registers a delegate that allows creation of instances of the type
- expressed by the for this and future requests. The delegate
- will be caches and future requests will directly call that delegate.
+ Helper class for building closed generic type for a given open generic type and a closed generic base.
- The delegate that allows creation of instances of the type
- expressed by the .
- Thrown when the is a
- null reference.
- Thrown when multiple observers that have registered to
- the ResolveUnregisteredType event
- called this method for the same type.
-
+
+ Result of the GenericTypeBuilder.
+
+
- Registers an that describes the creation of instances of the type
- expressed by the for this and future requests. The delegate
- will be cached and future requests will directly use that expression or the compiled delegate.
+ A open generic type with the concrete arguments that can be used to create a closed generic type.
-
- NOTE: If possible, use the Register(Registration) overload,
- since this allows the analysis services to determine any configuration errors on the lifestyle of
- the registration.
-
- The expression that describes the creation of instances of the type
- expressed by the .
- Thrown when the is a
- null reference.
- Thrown when multiple observers that have registered to
- the ResolveUnregisteredType event
- called this method for the same type.
-
+
+ This interface is not meant for public use.
+
+
+ Please do not use.
+ Do not use.
+
+
+ PLease do not use.
+ Do not use.
+
+
- Registers a that describes the creation of instances of the type
- expressed by the for this and future requests. The
- registration will be cached and future requests will directly call unon that registration, the
- expression that it generates or the delegate that gets compiled from that expression.
+ Allows validating an ArgumentMapping.
- The registration that describes the creation of instances according to
- the registration's lifestyle of the type expressed by the .
- Thrown when the is a
- null reference.
- Thrown when the is a
- not exactly of type where T equals the .
-
- Thrown when multiple observers that have registered to
- the ResolveUnregisteredType event
- called this method for the same type.
-
+
- This enumeration has defines in which way the container should run the verification process.
+ Factory for the creation of a delegate that applies caching to the supplied
+ .
+ A factory for creating new instances.
+ A factory that returns cached instances.
-
+
- Specifies that the container performs verification only, which means that it will test whether
- all registrations can be constructed by iterating the registrations and letting the container
- create at least one instance of each registration. An
- will be thrown in case the configuration is invalid.
+ Instances returned from the container can be cached. The contains several
+ overloads of the Register method that take a Lifestyle instance as argument to define
+ how returned instances should be cached. The core library contains two lifestyles out of the box. By
+ supplying Lifestyle.Transient, the registered instance is not
+ cached; a new instance is returned every time it is requested or injected. By supplying
+ Lifestyle.Singleton instances can be cached indefinitely; only
+ a single instance of the registered component will be returned by that container instance. Other
+ lifestyles are defined in integration and extension packages. The
+ CreateCustom method allows defining a custom lifestyle and
+ the CreateHybrid method
+ allows creating a lifestyle that mixes multiple other lifestyles.
+
+ This type is abstract and can be overridden to implement a custom lifestyle.
+
-
+
- Specifies that the container will run diagnostic analysis after the verification succeeded. The
- container will diagnose the configuration with a subset of the available diagnostic warnings, that
- are most likely an indication of a configuration mistake. A complete set of diagnostic warnings
- can be retrieved by calling
- Analyzer.Analyze or by viewing the
- container in the Visual Studio debugger, after the verification has succeeded.
+ The lifestyle instance that doesn't cache instances. A new instance of the specified
+ component is created every time the registered service is requested or injected.
+
+ The following example registers the SomeServiceImpl implementation for the
+ ISomeService service type using the Transient lifestyle:
+ (Lifestyle.Transient);
+ ]]>
+ Note that Transient is the default lifestyle, the previous registration can be reduced to
+ the following:
+ ();
+ ]]>
+
-
+
- Extension methods for enable advanced scenarios.
+
+ The lifestyle that caches components according to the lifetime of the container's configured
+ scoped lifestyle.
+
+
+ In case the type of a cached instance implements , the container will
+ ensure its disposal when the active scope gets disposed.
+
+
+ The following example registers the RealTimeProvider implementation for the
+ ITimeProvider service type using the Scoped lifestyle:
+ (Lifestyle.Scoped);
+ ]]>
+
-
+
- Determines whether the specified container is locked making any new registrations. The container
- is automatically locked when GetInstance is called for the
- first time.
+
+ The lifestyle that caches components during the lifetime of the instance
+ and guarantees that only a single instance of that component is created for that instance. Since
+ general use is to create a single Container instance for the lifetime of the application /
+ AppDomain, this would mean that only a single instance of that component would exist during the
+ lifetime of the application. In a multi-threaded applications, implementations registered using
+ this lifestyle must be thread-safe.
+
+
+ In case the type of a cached instance implements , the container will
+ ensure its disposal when the container gets disposed.
+
- The container.
-
- true if the specified container is locked; otherwise, false.
-
- Thrown when is null.
+
+ The following example registers the RealTimeProvider implementation for the
+ ITimeProvider service type using the Singleton lifestyle:
+ (Lifestyle.Singleton);
+ ]]>
+
-
- Determines whether the specified container is currently verifying its configuration.
- The container.
- true if the specified container is verifying; otherwise, false.
- Thrown when is null.
+
+ Initializes a new instance of the class.
+ The user friendly name of this lifestyle.
+ Thrown when is null (Nothing in VB)
+ or an empty string.
-
+
+ Gets the user friendly name of this lifestyle.
+ The user friendly name of this lifestyle.
+
+
- Retrieves an item from the container stored by the given or null when no
- item is stored by that key.
+ Gets the length of the lifestyle. Implementers must implement this property. The diagnostic
+ services use this value to compare lifestyles with each other to determine lifestyle
+ misconfigurations.
-
- Thread-safety: Calls to this method are thread-safe, but users should take proper
- percussions when they call both GetItem and .
-
- The container.
- The key of the item to retrieve.
- The stored item or null (Nothing in VB).
- Thrown when one of the supplied arguments is a null
- reference (Nothing in VB).
+ The representing the length of this lifestyle.
-
+
- Stores an item by the given in the container.
+ The hybrid lifestyle allows mixing two lifestyles in a single registration. The hybrid will use
+ the in case its
+ GetCurrentScope method returns a
+ scope; otherwise the is used. The hybrid lifestyle will
+ redirect the creation of the instance to the selected lifestyle. By nesting hybrid lifestyles,
+ any number of lifestyles can be mixed.
-
- Thread-safety: Calls to this method are thread-safe, but users should take proper
- percussions when they call both and SetItem.
-
- The container.
- The key of the item to insert or override.
- The actual item. May be null.
- Thrown when either or
- is a null reference (Nothing in VB).
+ The lifestyle to use when its
+ GetCurrentScope method returns a
+ scope..
+ The lifestyle to use when the
+ GetCurrentScope method of the
+ argument returns null.
+ A new hybrid lifestyle that wraps the supplied lifestyles.
+ Thrown when one of the supplied arguments is a null
+ reference (Nothing in VB).
+
+
+ The following example shows the creation of a HybridLifestyle that mixes an
+ ThreadScopedLifestyle and Transient:
+
+ (hybridLifestyle);
+ container.Register(hybridLifestyle);
+ ]]>
+
+ Hybrid lifestyles can be nested:
+
+
+
+ The mixedScopeLifestyle now mixed three lifestyles: Web Request, Thread Scoped and
+ Transient.
+
+
-
+
- Adds an item by the given in the container by using the specified function,
- if the key does not already exist. This operation is atomic.
+ The hybrid lifestyle allows mixing two lifestyles in a single registration. The hybrid will use
+ the in case its
+ GetCurrentScope method returns a
+ scope; otherwise the is used. The hybrid lifestyle will
+ redirect the creation of the instance to the selected lifestyle. By nesting hybrid lifestyles,
+ any number of lifestyles can be mixed.
- The Type of the item to create.
- The container.
- The key of the item to insert or override.
- The function used to generate a value for the given key. The supplied
- value of will be supplied to the function when called.
- The stored item or the item from the .
- Thrown when either ,
- or is a null reference (Nothing in VB).
+ The lifestyle to use when its
+ GetCurrentScope method returns a
+ scope..
+ The lifestyle to use when the
+ GetCurrentScope method of the
+ argument returns null.
+ A new hybrid lifestyle that wraps the supplied lifestyles.
+ Thrown when one of the supplied arguments is a null
+ reference (Nothing in VB).
+
+
+ The following example shows the creation of a HybridLifestyle that mixes an
+ ThreadScopedLifestyle and Transient:
+
+ (hybridLifestyle);
+ container.Register(hybridLifestyle);
+ ]]>
+
+ Hybrid lifestyles can be nested:
+
+
+
+ The mixedScopeLifestyle now mixed three lifestyles: Web Request, Thread Scoped and
+ Transient.
+
+
-
+
- Allows appending new registrations to existing registrations made using one of the
- RegisterCollection overloads.
+ The hybrid lifestyle allows mixing two lifestyles in a single registration. Based on the supplied
+ delegate the hybrid lifestyle will redirect the creation of
+ the instance to the correct lifestyle. The result of the
+ delegate will not be cached; it is invoked each time an instance is requested or injected. By
+ nesting hybrid lifestyles, any number of lifestyles can be mixed.
- The container.
- The service type of the collection.
- The registration to append.
+ The delegate that determines which
+ lifestyle should be used. The will be used if true is
+ returned; the otherwise. This delegate will be called every
+ time an instance needs to be resolved or injected.
+ The lifestyle to use when
+ returns true.
+ The lifestyle to use when
+ returns false.
+ A new hybrid lifestyle that wraps the supplied lifestyles.Thrown when one of the supplied arguments is a null
reference (Nothing in VB).
- Thrown when the is not a
- reference type, is open generic, or ambiguous.
- Thrown when the container is locked.
- Thrown when the method is called for a registration
- that is made with one of the RegisterCollection overloads that accepts a dynamic collection
- (an IEnumerable or IEnumerable<TService>).
+
+
+ The following example shows the creation of a HybridLifestyle that mixes an
+ WebRequestLifestyle and ThreadScopedLifestyle:
+
+ HttpContext.Current != null,
+ new WebRequestLifestyle(),
+ new ThreadScopedLifestyle());
+
+ // The created lifestyle can be reused for many registrations.
+ container.Register(mixedScopeLifestyle);
+ container.Register(mixedScopeLifestyle);
+ ]]>
+
+ Hybrid lifestyles can be nested:
+
+ lifestyle.GetCurrentScope(container) != null,
+ lifestyle,
+ Lifestyle.Transient);
+
+ var mixedScopeLifestyle = Lifestyle.CreateHybrid(
+ () => HttpContext.Current != null,
+ new WebRequestLifestyle(),
+ mixedLifetimeTransientLifestyle);
+ ]]>
+
+ The mixedScopeLifestyle now mixed three lifestyles: Web Request, Lifetime Scope and
+ Transient.
+
+
-
+
- Allows appending new registrations to existing registrations made using one of the
- RegisterCollection overloads.
+ The hybrid lifestyle allows mixing two lifestyles in a single registration. Based on the supplied
+ delegate the hybrid lifestyle will redirect the creation of
+ the instance to the correct lifestyle. The result of the
+ delegate will not be cached; it is invoked each time an instance is requested or injected. By
+ nesting hybrid lifestyles, any number of lifestyles can be mixed.
- The container.
- The service type of the collection.
- The implementation type to append.
+ The delegate that determines which
+ lifestyle should be used. The will be used if true is
+ returned; the otherwise. This delegate will be called every
+ time an instance needs to be resolved or injected.
+ The scoped lifestyle to use when
+ returns true.
+ The scoped lifestyle to use when
+ returns false.
+ A new scoped hybrid lifestyle that wraps the supplied lifestyles.Thrown when one of the supplied arguments is a null
reference (Nothing in VB).
- Thrown when the is not a
- reference type, or ambiguous.
- Thrown when the container is locked.
- Thrown when the method is called for a registration
- that is made with one of the RegisterCollection overloads that accepts a dynamic collection
- (an IEnumerable or IEnumerable<TService>).
-
-
- Deprecation extensions.
+
+
+ The following example shows the creation of a HybridLifestyle that mixes an
+ WebRequestLifestyle and ThreadScopedLifestyle:
+
+ HttpContext.Current != null,
+ new WebRequestLifestyle(),
+ new ThreadScopedLifestyle());
+
+ // The created lifestyle can be reused for many registrations.
+ container.Register(mixedScopeLifestyle);
+ container.Register(mixedScopeLifestyle);
+ ]]>
+
-
+
- This interface method has been removed. Please call GetInstanceProducerFor instead.
+ Creates a custom lifestyle using the supplied delegate.
- The behavior.
- The consumer.
- Throws an exception.
+
+ The supplied will be called just once per registered
+ service. The supplied will be called by the framework
+ when the type is resolved for the first time, and the framework will supply the factory with a
+ Func<object> for creating new (transient) instances of that type (that might
+ have been intercepted and
+ initializers might have been applied).
+ It is the job of the to return a Func<object>
+ that applies the proper caching. The Func<object> that is returned by the
+ will be stored for that registration (every
+ registration will store its own Func<object> delegate) and this delegate will be
+ called every time the service is resolved (by calling
+ container.GetInstance<TService> or when that service is injected into another
+ type).
+
+ The name of the lifestyle to create. The name is used to display the lifestyle
+ in the debugger.
+ A factory delegate that takes a Func<object> delegate
+ that will produce a transient instance and returns a delegate that returns cached instances.
+ A new .
+ Thrown when one of the arguments is a null reference
+ (Nothing in VB).
+ Thrown when is an empty string.
+
+ The following example shows the creation of a lifestyle that caches registered instances for 10
+ minutes:
+
+ {
+ TimeSpan timeout = TimeSpan.FromMinutes(10);
+ var syncRoot = new object();
+ var expirationTime = DateTime.MinValue;
+ object instance = null;
+
+ // If the application has multiple registrations using this lifestyle, each registration
+ // will get its own Func
+
-
+
- This interface method has been removed. Please call SelectProperty(PropertyInfo) instead.
+ Creates a new instance for the given
+ that will create new instances of specified with the
+ caching as specified by this lifestyle.
- The behavior.
- Type of the abstraction that is requested.
- The property to check.
- True when the property should be injected.
+ The interface or base type that can be used to retrieve the instances.
+ The concrete type that will be created.
+ The instance for which a
+ must be created.
+ A new instance.
+ Thrown when is a null
+ reference (Nothing in VB).
-
+
- Defines the container's behavior for finding a suitable constructor for the creation of a type.
- Set the ConstructorResolutionBehavior
- property of the container's property to change the default behavior
- of the container.
+ Creates a new instance for the given
+ that will create new instances of specified caching as
+ specified by this lifestyle.
+ The interface or base type that can be used to retrieve the instances.
+ The concrete type that will be created.
+ The instance for which a
+ must be created.
+ A new instance.
+ Thrown when either or
+ are null references (Nothing in VB).
-
+
- Gets the given 's constructor that can be used by the
- container to create that instance.
+ Creates a new instance for the given
+ that will create new instances instance using the supplied
+ with the caching as specified by this lifestyle.
- Type of the implementation to find a suitable constructor for.
-
- The . This method never returns null.
-
- Thrown when no suitable constructor could be found.
+ The interface or base type that can be used to retrieve the instances.
+ A delegate that will create a new instance of
+ every time it is called.
+ The instance for which a
+ must be created.
+ A new instance.
+ Thrown when either or
+ are null references (Nothing in VB).
-
+
- Defines the container's behavior for building an expression tree for an dependency to inject, based on
- the information of the consuming type the dependency is injected into.
- Set the ConstructorInjectionBehavior
- property of the container's property to change the default behavior
- of the container.
+ Creates a new instance for the given
+ that will create new instances of specified with the
+ caching as specified by this lifestyle.
+ The interface or base type that can be used to retrieve the instances.
+ The concrete type that will be registered.
+ The instance for which a
+ must be created.
+ A new instance.
+ Thrown when on of the supplied arguments is a null
+ reference (Nothing in VB).
-
- Verifies the specified .
- Contextual information about the consumer where the built dependency is
- injected into.
-
- Thrown when the type of the target supplied with
- the supplied cannot be used for auto wiring.
- Thrown when the supplied argument is a null reference.
-
-
+
- Gets the for the
- Target of the supplied .
+ Creates a new instance defining the creation of the
+ specified with the caching as specified by this lifestyle,
+ or returns an already created instance for this container + lifestyle
+ + type combination.
- Contextual information about the consumer where the built dependency is
- injected into.
- The indication whether the method should return null or throw
- an exception when the type is not registered.
- An that describes the intend of creating that
- Target. This method never returns null.
- Thrown when the argument is a null reference.
+ The concrete type that will be registered.
+ The instance for which a
+ must be created.
+ A new or cached instance.
+ Thrown when is a null
+ reference (Nothing in VB).
-
+
- Defines the container's behavior for selecting the lifestyle for a registration in case no lifestyle
- is explicitly supplied.
- Set the LifestyleSelectionBehavior
- property of the container's property to change the default behavior
- of the container. By default, when no lifestyle is explicitly supplied, the
- Transient lifestyle is used.
+ This overload has been deprecated. Please call
+ instead.
+ The interface or base type that can be used to retrieve the instances.
+ The concrete type that will be created.
+ The instance for which a
+ must be created.
+ A new instance.
+ Thrown when is a null
+ reference (Nothing in VB).
-
- Selects the lifestyle based on the supplied type information.
- Type of the implementation to that is registered.
- The suited for the given type.
- Thrown when either one of the arguments is a null reference.
-
-
+
- An instance of this type will be supplied to the
- delegate that is that is supplied to the
- RegisterResolveInterceptor
- method that takes this delegate. This type contains contextual information about a resolved type and it
- allows the user to examine the given instance to decide whether the
- should be applied or not.
+ Creates a new instance defining the creation of the
+ specified using the supplied
+ with the caching as specified by this lifestyle.
+ The interface or base type that can be used to retrieve the instances.
+ A delegate that will create a new instance of
+ every time it is called.
+ The instance for which a
+ must be created.
+ A new instance.
+ Thrown when either or
+ are null references (Nothing in VB).
-
+
- Gets the that is responsible for the initialization of the created
- instance.
+ Creates a new instance defining the creation of the
+ specified with the caching as specified by this lifestyle,
+ or returns an already created instance for this container + lifestyle
+ + type combination.
+ This method might fail when run in a partial trust sandbox when
+ is an internal type.
- The or null (Nothing in VB) when the instance producer is
- unknown.
+ The concrete type that will be registered.
+ The instance for which a
+ must be created.
+ A new instance.
+ Thrown when on of the supplied arguments is a null
+ reference (Nothing in VB).
-
+
- Gets the that is responsible for the initialization of the created
- instance.
+ This overload has been deprecated. Please call
+ instead.
- /// The .
+ The interface or base type that can be used to retrieve the instances.
+ The concrete type that will be registered.
+ The instance for which a
+ must be created.
+ A new instance.
+ Thrown when on of the supplied arguments is a null
+ reference (Nothing in VB).
-
+
- An instance of this type will be supplied to the
- delegate that is that is supplied to the
- RegisterInitializer
- overload that takes this delegate. This type contains contextual information about the creation and it
- allows the user to examine the given instance to decide whether the instance should be initialized or
- not.
+ Creates a new instance defining the creation of the
+ specified using the supplied
+ with the caching as specified by this lifestyle.
+ The interface or base type that can be used to retrieve the instances.
+ The delegate that will be responsible for creating new instances.
+ The instance for which a
+ must be created.
+ A new instance.
+ Thrown when on of the supplied arguments is a null
+ reference (Nothing in VB).
-
+
- Gets a null reference. This property has been deprecated.
+ When overridden in a derived class,
+ creates a new instance defining the creation of the
+ specified with the caching as specified by this lifestyle.
- The null (Nothing in VB).
+ The concrete type that will be registered.
+ The instance for which a
+ must be created.
+ A new instance.
+
+ If you are implementing your own lifestyle, override this method to implement the code necessary
+ to create and return a new . Note that you should always create
+ a new instance. They should never be cached.
+
-
+
- Gets the that is responsible for the initialization of the created
- instance.
+ When overridden in a derived class,
+ creates a new instance defining the creation of the
+ specified using the supplied
+ with the caching as specified by this lifestyle.
- /// The .
+ The interface or base type that can be used to retrieve the instances.
+ A delegate that will create a new instance of
+ every time it is called.
+ The instance for which a
+ must be created.
+ A new instance.
+
+ If you are implementing your own lifestyle, override this method to implement the code necessary
+ to create and return a new . Note that you should always create
+ a new instance. They should never be cached.
+
-
+
- Contains data that can be used to initialize a created instance. This data includes the actual
- created and the information about the created instance.
+ Defines a lifestyle that caches instances during the lifetime of an explicitly defined scope using the
+ BeginScope
+ method. An execution context scope flows with the logical execution context. Scopes can be nested and
+ nested scopes will get their own instance. Instances created by this lifestyle can be disposed when
+ the created scope gets disposed.
+
+ The following example shows the usage of the ExecutionContextScopeLifestyle class:
+ (Lifestyle.Scoped);
+
+ using (AsyncScopedLifestyle.BeginScope(container))
+ {
+ var instance1 = container.GetInstance();
+ // ...
+ }
+ ]]>
+
-
- Initializes a new instance of the struct.
- The that contains contextual information
- about the created instance.
- The created instance.
-
-
- Gets the with contextual information about the
- created instance.
- The .
-
-
- Gets the created instance.
- The created instance.
-
-
- Returns the hash code for this instance.
- A 32-bit signed integer that is the hash code for this instance.
-
-
- Indicates whether this instance and a specified object are equal.
- Another object to compare to.
- True if the current object is equal to the other parameter; otherwise, false.
+
+ Initializes a new instance of the class.
-
+
- Indicates whether the current object is equal to another object of the same type.
+ Begins a new scope for the given .
- An object to compare with this object.
- True if the current object is equal to the other parameter; otherwise, false.
+ The container.
+ A new instance.
+
+ Thrown when the is a null reference.
-
+
- Indicates whether the values of two specified objects are equal.
+ Creates a delegate that upon invocation return the current for this
+ lifestyle and the given , or null when the delegate is executed outside
+ the context of such scope.
- The first object to compare.
- The second object to compare.
- True if a and b are equal; otherwise, false.
+ The container for which the delegate gets created.
+ A delegate. This method never returns null.
-
+
- Indicates whether the values of two specified objects are
- not equal.
+ This lifestyle can be used to implement ambient context-less scoping in Simple Injector. This lifestyle
+ can be set as DefaultScopedLifestyle and later used via Lifestyle.Scoped to register scoped instances,
+ while instances are resolved via Scope.GetInstance.
- The first object to compare.
- The second object to compare.
- True if a and b are not equal; otherwise, false.
-
+
- Defines the container's behavior for selecting properties to inject during the creation of a type.
- Set the PropertySelectionBehavior
- property of the container's property to change the default behavior
- of the container. By default, no properties will be injected by the container.
+ Forwards CreateRegistration calls to the lifestyle that is returned from the registered
+ container.Options.LifestyleSelectionBehavior.
-
+
- Determines whether a property should be injected by the container upon creation of its type.
+ Defines a lifestyle that caches instances during the lifetime of an explicitly defined scope using the
+ BeginScope
+ method. A scope is thread-specific, each thread should define its own scope. Scopes can be nested and
+ nested scopes will get their own instance. Instances created by this lifestyle can be disposed when
+ the created scope gets disposed.
-
- The type being created for which the property should be injected. Note that this might a
- different type than the type on which the property is declared (which might be a base class).
- The property to check.
- True when the property should be injected.
+
+ The following example shows the usage of the ThreadScopedLifestyle class:
+ (Lifestyle.Scoped);
+
+ using (container.BeginLifetimeScope())
+ {
+ var instance1 = container.GetInstance();
+
+ // This call will return the same instance.
+ var instance2 = container.GetInstance();
+
+ Assert.IsTrue(object.ReferenceEquals(instance1, instance2));
+
+ // Create a nested scope.
+ using (container.BeginLifetimeScope())
+ {
+ // A nested scope gets its own instance.
+ var instance3 = container.GetInstance();
+
+ Assert.IsFalse(object.ReferenceEquals(instance1, instance3));
+
+ // This call will return the same instance.
+ var instance4 = container.GetInstance();
+
+ Assert.IsTrue(object.ReferenceEquals(instance3, instance4));
+ }
+ }
+ ]]>
+
-
-
- A known relationship defines a relationship between two types. The Diagnostics Debug View uses this
- information to spot possible misconfigurations.
+
+ Initializes a new instance of the class.
+ The created and cached instance will be disposed when the created
+ instance gets disposed and when the created object implements
+ .
-
- Initializes a new instance of the class.
- The implementation type of the parent type.
- The lifestyle of the parent type.
- The type that the parent depends on (it is injected into the parent).
-
-
- Gets the implementation type of the parent type of the relationship.
- The implementation type of the parent type of the relationship.
-
-
- Gets the lifestyle of the parent type of the relationship.
- The lifestyle of the parent type of the relationship.
-
-
- Gets the type that the parent depends on (it is injected into the parent).
- The type that the parent depends on.
+
+
+ Begins a new scope for the given .
+ Services, registered using the are cached during the
+ lifetime of that scope. The scope should be disposed explicitly.
+
+ The container.
+ A new instance.
+
+ Thrown when the is a null reference.
+
+
+
-
- Serves as a hash function for a particular type.
- A hash code for the current .
+
+
+ Creates a delegate that upon invocation return the current for this
+ lifestyle and the given , or null when the delegate is executed outside
+ the context of such scope.
+
+ The container for which the delegate gets created.
+ A delegate. This method never returns null.
-
+
- Determines whether the specified is equal to the current
- .
+ Returns the current for this lifestyle and the given
+ , or null when this method is executed outside the context of a scope.
- The object to compare with the current object.
- True if the specified is equal to the current
- ; otherwise, false.
+ The container instance that is related to the scope to return.
+ A instance or null when there is no scope active in this context.
-
+
- This is an internal type. Only depend on this type when you want to be absolutely sure a future
- version of the framework will break your code.
+ An instance of this type will be supplied to the
+ delegate that is that is supplied to the
+ RegisterConditional
+ overload that takes this delegate. This type contains information about the open generic service that
+ is about to be created and it allows the user to examine the given instance to decide whether this
+ implementation should be created or not.
+
+ Please see the
+ Register
+ method for more information.
+
-
- Initializes a new instance of the struct.
- The scope factory.
- The container.
+
+ Gets the closed generic service type that is to be created.
+ The closed generic service type.
-
- Gets the lazily initialized Scope of the current LazyScope instance.
- The current Scope or null.
+
+ Gets the closed generic implementation type that will be created by the container.
+ The implementation type.
-
-
- This is an internal type. Only depend on this type when you want to be absolutely sure a future
- version of the framework will break your code.
-
- Implementation type.
+
+ Gets a value indicating whether a previous Register registration has already
+ been applied for the given .
+ The indication whether the event has been handled.
-
+
- Initializes a new instance of the
- struct.
- The registration.
-
-
- Gets the lazily initialized instance for the of the current LazyScopedRegistration.
- The scope that is used to retrieve the instance.
- The cached instance.
+ Gets the contextual information of the consuming component that directly depends on the resolved
+ service. This property will return null in case the service is resolved directly from the container.
+
+ The or null.
-
+
- Hooks into the building process and adds a decorator if needed.
+ A Registration implements lifestyle based caching for a single service and allows building an
+ that describes the creation of the service.
+
+ implementations create a new Registration instance for each registered
+ service type. s returned from the
+ BuildExpression method can be
+ intercepted by any event registered with , have
+ initializers
+ applied, and the caching particular to its lifestyle have been applied. Interception using the
+ Container.ExpressionBuilt will not
+ be applied in the Registration, but will be applied in .
+
+ See the documentation for an example.
+
-
+
- Diagnostic result that warns about when a multiple registrations map to the same implementation type
- and lifestyle, which might cause multiple instances to be created during the lifespan of that lifestyle.
- For more information, see: https://simpleinjector.org/diaal.
+ Initializes a new instance of the class.
+ The this that created this registration.
+ The instance for this registration.
+ Thrown when one of the supplied arguments is a null
+ reference (Nothing in VB).
-
- Gets the lifestyles that causes the registrations to be conflicting.
- instances.
+
+ Gets the type that this instance will create.
+ The type that this instance will create.
-
- Gets the implementation type that the affected registrations map to.
- A .
+
+ Gets the this that created this registration.
+ The this that created this registration.
-
- Gets the registration that caused this warning.
- /// An .
+
+ Gets the instance for this registration.
+ The instance for this registration.
-
+
+ Gets or sets a value indicating whether this registration object contains a user
+ supplied instanceCreator factory delegate.
+
+
- Gets the list of registrations that are in conflict with the .
+ Builds a new with the correct caching (according to the specifications of
+ its ) applied.
- A list of instances.
+ An .
-
+
- Entry point for doing diagnostic analysis on instances.
+ Gets the list of instances. Note that the list is only available
+ after calling .
-
- The following example shows the usage of the Analyzer class:
-
-
+ A new array containing the instances.
-
+
- Analyzes the supplied instance.
+ Initializes an already created instance and applies properties and initializers to that instance.
- The container instance to analyze.
- A collection of sub types that describe the diagnostic
- warnings and messages.
+
+ This method is especially useful in integration scenarios where the given platform is in control
+ of creating certain types. By passing the instance created by the platform to this method, the
+ container is still able to apply any properties (as defined using a custom
+ ) and by applying any initializers.
+
+ The instance to initialize.
+ Thrown when is a null reference
+ (Nothing in VB).
+ Thrown when the supplied is not
+ of type .
-
+
- Diagnostic result for a warning about a concrete type that was not registered explicitly and was not
- resolved using unregistered type resolution, but was created by the container using the transient
- lifestyle.
- For more information, see: https://simpleinjector.org/diaut.
+ Suppressing the supplied for the given registration.
+ The .
+ The justification of why the warning must be suppressed.
+ Thrown when is a null
+ reference.
+ Thrown when either is an
+ empty string or when is not a valid value of .
+
-
- Gets a collection of instances that describe all
- container-registered dependencies for the given component.
- List of objects.
-
-
+
- A hierarchical group of .
+ Builds a delegate for the creation of the
+ using the supplied . The returned might
+ be intercepted by a
+ Container.ExpressionBuilding event,
+ and the will have been wrapped with a delegate that executes the
+ registered initializers
+ that are applicable to the given (if any).
+ The interface or base type that can be used to retrieve instances.
+
+ The delegate supplied by the user that allows building or creating new instances.
+ A delegate.
+ Thrown when one of the arguments is a null reference.
-
+
- Gets the base that describes the service types of its
- . The value often be either (in case this is a
- root group) or a partial generic type to allow hierarchical grouping of a large number of related
- generic types.
+ Builds a delegate for the creation of .
+ The returned might be intercepted by a
+ Container.ExpressionBuilding event,
+ and the creation of the will have been wrapped with a
+ delegate that executes the registered
+ initializers
+ that are applicable to the given (if any).
- The .
-
-
- Gets the friendly name of the group.
- The name.
-
-
- Gets the description of the group.
- The description.
-
-
- Gets the diagnostic type of all grouped instances.
- The .
-
-
- Gets the parent or null (Nothing in VB) when this is the
- root group.
- The .
-
-
- Gets the collection of child s.
- A collection of elements.
+ A delegate.
+ Thrown when one of the arguments is a null reference.
-
- Gets the collection of instances.
- /// A collection of elements.
+
+
+ Builds an that describes the creation of the
+ using the supplied . The returned might
+ be intercepted by a
+ Container.ExpressionBuilding event,
+ and the will have been wrapped with a delegate that executes the
+ registered initializers that are
+ applicable to the given (if any).
+
+ The interface or base type that can be used to retrieve instances.
+
+ The delegate supplied by the user that allows building or creating new instances.
+ An .
+ Thrown when one of the arguments is a null reference.
-
+
- Base class for types that hold information about a single diagnostic message or warning for a
- particular type or part of the configuration.
+ Builds an that describes the creation of .
+ The returned might be intercepted
+ by a Container.ExpressionBuilding
+ event, and the creation of the will have been wrapped with
+ a delegate that executes the registered
+ initializers that are applicable
+ to the InstanceProducer's ServiceType (if any).
+ An .
+ Thrown when one of the arguments is a null reference.
-
- Gets the severity of this result.
- The .
+
+ Implements a cache for implementations.
+
+ is thread-safe can be used over multiple threads concurrently, but note that the
+ cached instances might not be thread-safe.
+
-
- Gets the diagnostic type of this result.
- The .
+
+ Initializes a new instance of the class.
-
- Gets the service type to which this warning is related.
- A .
+
+ Initializes a new instance of the class.
+ The container instance that the scope belongs to.
-
- Gets the description of the diagnostic result.
- A with the description.
+
+ Gets the container instance that this scope belongs to.
+ The instance.
-
- Gets the documentation URL of the diagnostic result.
- A with the URL.
+
+ Gets an instance of the given for the current scope.
+ The type of the service to resolve.
+ An instance of the given service type.
-
- Gets the hierarchical group to which this diagnostic result belongs.
- The .
+
+ Gets an instance of the given for the current scope.
+ The type of the service to resolve.
+ An instance of the given service type.
-
+
- Specifies the list of severity levels that diagnostic results can have.
+ Allows registering an delegate that will be called when the scope ends,
+ but before the scope disposes any instances.
+
+ During the call to all registered delegates are
+ processed in the order of registration. Do note that registered actions are not guaranteed
+ to run. In case an exception is thrown during the call to , the
+ will stop running any actions that might not have been invoked at that point.
+ Instances that are registered for disposal using on the other
+ hand, are guaranteed to be disposed. Note that registered actions won't be invoked during a call
+ to .
+
+ The delegate to run when the scope ends.
+ Thrown when one of the arguments is a null reference
+ (Nothing in VB).
+ Thrown when the scope has been disposed.
-
- Information messages and tips about the configuration.
-
-
- Warning messages that are likely to cause problems in your application.
-
-
+
- Specifies the list of diagnostic types that are currently supported by the diagnostic
- . Note that new diagnostic types might be added in future versions.
- For more information, please read the
- Diagnosing your configuration using the Diagnostic
- Services wiki documentation.
+ Adds the to the list of items that will get disposed when the
+ scope ends.
+
+ Instances that are registered for disposal, will be disposed in opposite order of registration and
+ they are guaranteed to be disposed when is called (even when
+ exceptions are thrown). This mimics the behavior of the C# and VB using statements,
+ where the method is called inside the finally block.
+
+ The instance that should be disposed when the scope ends.
+ Thrown when one of the arguments is a null reference
+ (Nothing in VB).
+ Thrown when the scope has been disposed.
-
+
- Diagnostic type that warns about
- a concrete type that was not registered explicitly and was not resolved using unregistered type
- resolution, but was created by the container using the transient lifestyle.
- For more information, see: https://simpleinjector.org/diaut.
+ Retrieves an item from the scope stored by the given or null when no
+ item is stored by that key.
+
+ Thread-safety: Calls to this method are thread-safe, but users should take proper
+ percussions when they call both GetItem and .
+
+ The key of the item to retrieve.
+ The stored item or null (Nothing in VB).
+ Thrown when one of the supplied arguments is a null
+ reference (Nothing in VB).
-
+
+ Stores an item by the given in the scope.
+
+ Thread-safety: Calls to this method are thread-safe, but users should take proper
+ percussions when they call both and SetItem.
+
+ The key of the item to insert or override.
+ The actual item. May be null.
+ Thrown when paramref name="key"/> is a null reference
+ (Nothing in VB).
+
+
- Diagnostic type that warns when a
- component depends on a service with a lifestyle that is shorter than that of the component.
- For more information, see: https://simpleinjector.org/dialm.
+ Returns the list of instances that will be disposed of when this
+ instance is being disposed. The list contains scoped instances that are cached in this instance,
+ and instances explicitly registered for disposal using . The instances are returned
+ in order of creation/registration. When Scope.Dispose is called, the scope will ensure
+ is called on each instance in this list. The instance will be disposed in opposite
+ order as they appear in the list.
+ The list of instances that will be disposed of when this
+ instance is being disposed.
+
+
+ Releases all instances that are cached by the object.
-
+
- Diagnostic type that warns when a
- component depends on an unregistered concrete type and this concrete type has a lifestyle that is
- different than the lifestyle of an explicitly registered type that uses this concrete type as its
- implementation.
- For more information, see: https://simpleinjector.org/diasc.
+ Releases all instances that are cached by the object.
+ False when only unmanaged resources should be released.
-
+
- Diagnostic type that warns when a component depends on (too) many services.
- For more information, see: https://simpleinjector.org/diasr.
+ Base class for scoped lifestyles. A scoped lifestyle caches instances for the duration of an implicitly
+ or explicitly defined scope. Such scope can be an (implicitly defined) web request or an explicitly
+ defined Lifetime Scope. The lifetime of instances registered with a scoped lifestyle is always equal
+ or bigger than one-instance-per-object-graph. In other words, a call to GetInstance() will never create
+ more than one instance of such registered type.
-
+
- Diagnostic type that warns when multiple registrations map to the same component and
- lifestyle, which might cause multiple instances to be created during the lifespan of that lifestyle.
- For more information, see: https://simpleinjector.org/diatl.
+ Gets the scoped lifestyle that allows Scoped registrations to be resolved direclty from the
+ by calling . This allows multiple
+ scopes to be active and overlap within the same logical context, such as a single thread, or an
+ asynchronous context.
-
+
+ Initializes a new instance of the class.
+ The user friendly name of this lifestyle.
+ Thrown when is null (Nothing in VB)
+ or an empty string.
+
+
+ Initializes a new instance of the class.
+ The user friendly name of this lifestyle.
+ Signals the lifestyle whether instances should be
+ disposed or not.
+ Thrown when is null (Nothing in VB)
+ or an empty string.
+
+
+ Gets the length of the lifestyle.
+ The representing the length of this lifestyle.
+
+
- Diagnostic type that warns when a component is registered as transient, while implementing
- .
- For more information, see: https://simpleinjector.org/diadt.
+ Allows registering an delegate that will be called when the scope ends,
+ but before the scope disposes any instances.
+
+ During the call to all registered delegates are
+ processed in the order of registration. Do note that registered actions are not guaranteed
+ to run. In case an exception is thrown during the call to , the
+ will stop running any actions that might not have been invoked at that point.
+ Instances that are registered for disposal using on the other
+ hand, are guaranteed to be disposed. Note that registered actions won't be invoked during a call
+ to .
+
+ The instance.
+ The delegate to run when the scope ends.
+ Thrown when one of the arguments is a null reference
+ (Nothing in VB).
+ Will be thrown when there is currently no active
+ scope for the supplied .
-
+
- Diagnostic type that warns when multiple registrations exist that map to the same component but
- with different lifestyles, which will cause the component to be cached in different -possibly
- incompatible- ways.
- For more information, see: https://simpleinjector.org/diaal.
+ Adds the to the list of items that will get disposed when the
+ scope ends.
+ The instance.
+ The instance that should be disposed when the scope ends.
+ Thrown when one of the arguments is a null reference
+ (Nothing in VB).
+ Will be thrown when there is currently no active
+ scope for the supplied .
-
+
- Diagnostic result for a warning about a component that is registered as transient, but implements
- .
- For more information, see: https://simpleinjector.org/diadt.
+ Returns the current for this lifestyle and the given
+ , or null when this method is executed outside the context of a scope.
+ The container instance that is related to the scope to return.
+ A instance or null when there is no scope active in this context.
-
- Gets the object that describes the relationship between the component and its dependency.
- A instance.
-
-
+
- Diagnostic result for a warning about a
- component that depends on a service with a lifestyle that is shorter than that of the component.
- For more information, see: https://simpleinjector.org/dialm.
+ Creates a delegate that upon invocation return the current for this
+ lifestyle and the given , or null when the delegate is executed outside
+ the context of such scope.
+ The container for which the delegate gets created.
+ A delegate. This method should never return null.
-
- Gets the object that describes the relationship between the component and its dependency.
- A instance.
-
-
+
- Diagnostic result that warns about a
- component that depends on an unregistered concrete type and this concrete type has a lifestyle that is
- different than the lifestyle of an explicitly registered type that uses this concrete type as its
- implementation.
- For more information, see: https://simpleinjector.org/diasc.
+ Creates a new instance defining the creation of the
+ specified using the supplied
+ with the caching as specified by this lifestyle.
+ The interface or base type that can be used to retrieve the instances.
+ A delegate that will create a new instance of
+ every time it is called.
+ The instance for which a
+ must be created.
+ A new instance.
-
- Gets the instance that describes the current relationship between the checked component
- and the short-circuited dependency.
- The .
-
-
+
- Gets the collection of registrations that have the component's current dependency as
- implementation type, but have a lifestyle that is different than the current dependency.
+ Creates a new instance defining the creation of the
+ specified with the caching as specified by this lifestyle.
- A collection of instances.
+ The concrete type that will be registered.
+ The instance for which a
+ must be created.
+ A new instance.
-
+
- Diagnostic result that warns about a component that depends on (too) many services.
- For more information, see: https://simpleinjector.org/diasr.
+ Returns the current for this lifestyle and the given
+ , or null when this method is executed outside the context of a scope.
+
+ By default, this method calls the method and invokes the
+ returned delegate. This method can be overridden to provide an optimized way for getting the
+ current scope.
+
+ The container instance that is related to the scope to return.
+ A instance or null when there is no scope active in this context.
-
- Gets the created type.
- A .
-
-
- Gets the list of registrations that are dependencies of the .
- A collection of instances.
+
+ Internal helper for string resources.
-
+
- Diagnostic result that warns about when a multiple registrations map to the same implementation type
- and lifestyle, which might cause multiple instances to be created during the lifespan of that lifestyle.
- For more information, see: https://simpleinjector.org/diatl.
+ Contains contextual information for creating an implementation type.
+
+ Please see the
+ Register
+ method for more information.
+
-
- Gets the lifestyle on which instances are torn.
- A .
-
-
- Gets the implementation type that the affected registrations map to.
- A .
-
-
- Gets the list of registrations that are affected by this warning.
- A list of instances.
+
+ Gets the closed generic service type that is to be created.
+ The closed generic service type.
-
+
- A map containing a generic argument (such as T) and the concrete type (such as Int32) that it
- represents.
+ Gets the contextual information of the consuming component that directly depends on the resolved
+ service. This property will return null in case the service is resolved directly from the container.
+ The or null.
-
- Implements equality. Needed for doing LINQ distinct operations.
- The other to compare to.
- True or false.
-
-
- Overrides the default hash code. Needed for doing LINQ distinct operations.
- An 32 bit integer.
-
-
+
- Container controlled collections can be supplied with both Type objects or direct Registration
- instances.
+ Returns a list of base types and interfaces of implementationType that either
+ equal to serviceType or are closed or partially closed version of serviceType (in case
+ serviceType itself is generic).
+ So:
+ -in case serviceType is non generic, only serviceType will be returned.
+ -If implementationType is open generic, serviceType will be returned (or a partially closed
+ version of serviceType is returned).
+ -If serviceType is generic and implementationType is not, a closed version of serviceType will
+ be returned.
+ -If implementationType implements multiple (partially) closed versions of serviceType, all those
+ (partially) closed versions will be returned.
+ The (open generic) service type to match.
+ The implementationType to search.
+ A list of types.
-
- Will never be null. Can be open-generic.
+
+ Useful extensions on .
-
- Can be null.
+
+
+ Builds an easy to read type name. Namespaces will be omitted, and generic types will be displayed
+ in a C#-like syntax. Ideal for reporting type names in exception messages.
+
+ The type to convert.
+ A human-readable string representation of that type.
+ Thrown when the supplied argument is a null reference.
-
+
- Gets a message that describes the current exception.
+ Returns true is there is a closed version of the supplied
+ that is assignable from the current . This method returns true when either
+ itself, one of its base classes or one of its implemented interfaces is a
+ closed version of ; otherwise false.
- The error message that explains the reason for the exception, or an empty string("").
+ The type to check.
+ The generic type definition to match.
+ True when type is assignable; otherwise false.
-
+
- Allows verifying whether a given type has a direct or indirect dependency on itself. Verifying is done
- by preventing recursive calls to an InstanceProducer. A CyclicDependencyValidator instance checks a
- single InstanceProducer and therefore a single service type.
+ Gets the single closed version of that the current
+ is assignable from. In case none or multiple matching closed types are
+ found, and exception is thrown. Example: When is a type
+ class X : IX<int>, IFoo<string> and
+ is type IX<T>: this method will return type IX<int>.
+ The type to check.
+ The generic type definition to match.
+ The matching closed type.
+ Thrown when one of the arguments is a null reference.
+ Thrown when is not
+ a generic type or when none of the base classes or implemented interfaces of
+ are closed-versions of .
+ Thrown when multiple matching closed generic types
+ are found.
-
+
- Allows retrieving the concrete types of the generic type arguments of that must be used to create a
- closed generic implementation of a given open generic implementation, based on on the concrete
- arguments of the given closed base type.
+ Gets the list of closed versions of that the current
+ is assignable from. Example: When is a type
+ class X : IX<int>, IFoo<string> and
+ is type IX<T>: this method will return type IX<int>.
+ The type to check.
+ The generic type definition to match.
+ A list of matching closed generic types.
-
+
- Helper class for building closed generic type for a given open generic type and a closed generic base.
+ Defines options to control the types returned from the
+ GetTypesToRegister
+ method. For a type to be returned, it should match all the conditions described by the class's
+ properties. In other words, in case the searched assembly contains a generic type, that is both a
+ decorator and a composite, it will only be returned by GetTypesToRegister in case both
+ , and
+ are set to true.
-
- Result of the GenericTypeBuilder.
+
+ Initializes a new instance of the class.
-
+
- A open generic type with the concrete arguments that can be used to create a closed generic type.
+ Gets or sets a value indicating whether decorator types should be included in the result. The default
+ value of this property is false. A type is considered a decorator if the type's constructor
+ contains a parameter of the type that exactly matches the serviceType argument,
+ supplied to the
+ GetTypesToRegister
+ method, or when there is a argument where T matches the
+ serviceType argument.
+ A boolean.
-
- This interface is not meant for public use.
-
-
- Please do not use.
- Do not use.
-
-
- PLease do not use.
- Do not use.
+
+
+ Gets or sets a value indicating whether generic type definitions (types that have
+ Type.IsGenericTypeDefinition
+ set to true)
+ should be included in the result. The default value for this property is false.
+
+ A boolean.
-
+
- Allows validating an ArgumentMapping.
+ Gets or sets a value indicating whether composite types should be included in the result. The default
+ value of this property is true. A type is considered a composite if the type's constructor
+ contains a parameter of IEnumerable<T>, ICollection<T>,
+ IList<T>, IReadOnlyCollection<T>,
+ IReadOnlyList<T> or T[] (array of T), where T
+ exactly matches the serviceType argument, supplied to the
+ GetTypesToRegister
+ method.
+ A boolean.
-
+
- Defines a lifestyle that caches instances during the lifetime of an explicitly defined scope using the
- BeginScope
- method. An execution context scope flows with the logical execution context. Scopes can be nested and
- nested scopes will get their own instance. Instances created by this lifestyle can be disposed when
- the created scope gets disposed.
+ Provides data for and interaction with the
+ ResolveUnregisteredType event of
+ the . An observer can check the
+ to see whether the unregistered type can be handled. The
+ method can be called to register a delegate
+ that allows creation of instances of the unregistered for this and future requests.
-
- The following example shows the usage of the ExecutionContextScopeLifestyle class:
- (Lifestyle.Scoped);
-
- using (AsyncScopedLifestyle.BeginScope(container))
- {
- var instance1 = container.GetInstance();
- // ...
- }
- ]]>
-
-
- Initializes a new instance of the class.
+
+ Gets the unregistered service type that is currently requested.
+ The unregistered service type that is currently requested.
-
+
- Begins a new scope for the given .
+ Gets a value indicating whether the event represented by this instance has been handled.
+ This property will return true when has been called on
+ this instance.
- The container.
- A new instance.
-
- Thrown when the is a null reference.
+ The indication whether the event has been handled.
-
+
- Creates a delegate that upon invocation return the current