ActivatorUtilities.CreateInstance wymaga dostawcy innego niż null
Dwie metody zgłaszają ArgumentNullException teraz wyjątek, jeśli provider
parametr ma wartość null
.ActivatorUtilities.CreateInstance
Wprowadzona wersja
.NET 8 (wersja zapoznawcza 1)
Poprzednie zachowanie
Wartość null
była dozwolona dla parametru provider
. W niektórych przypadkach określony typ został nadal poprawnie utworzony.
Nowe zachowanie
Gdy provider
parametr to null
, zgłaszany ArgumentNullException jest wyjątek.
Typ zmiany powodującej niezgodność
Ta zmiana jest zmianą behawioralną.
Przyczyna wprowadzenia zmiany
Naprawiliśmy walidację parametru wraz z problemami dopasowywania konstruktorów w celu dopasowania do zamierzonego CreateInstancecelu . Metody CreateInstance()
mają parametr niezwiązany provider
z wartością null, więc ogólnie oczekiwano, że null
dostawca nie jest dozwolony.
Zalecana akcja
Przekaż argument o wartości innej niż null IServiceProviderprovider
. Jeśli dostawca implementuje IServiceProviderIsServicerównież , argumenty konstruktora można uzyskać za pomocą tego polecenia.
Alternatywnie, jeśli scenariusz nie wymaga wstrzykiwania zależności, ponieważ IServiceProvider jest null
to , użyj Activator.CreateInstance zamiast tego .
Dotyczy interfejsów API
- Microsoft.Extensions.DependencyInjection.ActivatorUtilities.CreateInstance<T>(IServiceProvider, Object[])
- Microsoft.Extensions.DependencyInjection.ActivatorUtilities.CreateInstance(IServiceProvider, Type, Object[])