ActivatorUtilities.CreateInstance requer provedor não nulo
Os dois ActivatorUtilities.CreateInstance métodos agora lançam uma ArgumentNullException exceção se o provider
parâmetro for null
.
Versão introduzida
.NET 8 Visualização 1
Comportamento anterior
Foi permitido um null
valor para o provider
parâmetro. Em alguns casos, o tipo especificado ainda foi criado corretamente.
Novo comportamento
Quando provider
é null
, uma ArgumentNullException exceção é lançada.
Tipo de mudança de rutura
Esta mudança é uma mudança comportamental.
Razão para a alteração
Corrigimos a validação de parâmetros juntamente com problemas de correspondência de construtores para alinhar com a finalidade pretendida do CreateInstance. Os CreateInstance()
métodos têm um parâmetro não anulável provider
, portanto, geralmente esperava-se que um null
provedor não fosse permitido.
Ação recomendada
Passe um não-nulo IServiceProvider para o provider
argumento. Se o provedor também implementa , argumentos de IServiceProviderIsServiceconstrutor podem ser obtidos através disso.
Como alternativa, se o seu cenário não exigir injeção de dependência, uma vez que IServiceProvider é null
, use Activator.CreateInstance em vez disso.
APIs afetadas
- Microsoft.Extensions.DependencyInjection.ActivatorUtilities.CreateInstance<T>(IServiceProvider, Object[])
- Microsoft.Extensions.DependencyInjection.ActivatorUtilities.CreateInstance(IServiceProvider, Type, Object[])