ActivatorUtilities.CreateInstance nécessite un fournisseur non nul
Les deux méthodes ActivatorUtilities.CreateInstance lèvent maintenant une exception ArgumentNullException si le paramètre provider
est null
.
Version introduite
.NET 8 Preview 1
Comportement précédent
Une valeur null
a été autorisée pour le paramètre provider
. Dans certains cas, le type spécifié était toujours correctement créé.
Nouveau comportement
Quand provider
est null
, une exception ArgumentNullException est levée.
Type de changement cassant
Ce changement est un changement de comportement.
Raison du changement
Nous avons résolu des problèmes de validation des paramètres ainsi que des problèmes de correspondance de constructeurs pour nous aligner sur l’objectif prévu de CreateInstance. Les méthodes CreateInstance()
ayant un paramètre non nullable provider
, il arrivait très souvent qu’un fournisseur null
ne soit pas autorisé.
Action recommandée
Transmettez une valeur non nulle IServiceProvider pour l’argument provider
. Si le fournisseur implémente également IServiceProviderIsService, les arguments du constructeur peuvent être obtenus par ce biais.
Sinon, si votre scénario ne nécessite pas d’injection de dépendances, puisque IServiceProvider est null
, utilisez Activator.CreateInstance à la place.
API affectées
- Microsoft.Extensions.DependencyInjection.ActivatorUtilities.CreateInstance<T>(IServiceProvider, Object[])
- Microsoft.Extensions.DependencyInjection.ActivatorUtilities.CreateInstance(IServiceProvider, Type, Object[])