ActivatorUtilities.CreateInstance kräver icke-null-provider
De två ActivatorUtilities.CreateInstance metoderna utlöser nu ett ArgumentNullException undantag om parametern provider
är null
.
Version introducerad
Förhandsversion 1 av .NET 8
Tidigare beteende
Ett null
värde tilläts för parametern provider
. I vissa fall skapades den angivna typen fortfarande korrekt.
Nytt beteende
När provider
är null
genereras ett ArgumentNullException undantag.
Typ av icke-bakåtkompatibel ändring
Den här ändringen är en beteendeförändring.
Orsak till ändringen
Vi har korrigerat parameterverifieringen tillsammans med problem med konstruktormatchning för att överensstämma med det avsedda syftet med CreateInstance. Metoderna CreateInstance()
har en parameter som inte kan null-värdet provider
, så det förväntades vanligtvis att en null
provider inte tilläts.
Rekommenderad åtgärd
Skicka ett icke-null IServiceProvider för provider
argumentet. Om providern även implementerar IServiceProviderIsServicekan konstruktorargument hämtas genom detta.
Du kan också använda om ditt scenario inte kräver beroendeinmatning, eftersom IServiceProvider är null
, Activator.CreateInstance i stället.
Berörda API:er
- Microsoft.Extensions.DependencyInjection.ActivatorUtilities.CreateInstance<T>(IServiceProvider, Object[])
- Microsoft.Extensions.DependencyInjection.ActivatorUtilities.CreateInstance(IServiceProvider, Type, Object[])