ActivatorUtilities.CreateInstance 需要非 Null 提供者
如果 provider
參數為 null
,這兩種 ActivatorUtilities.CreateInstance 方法現在會擲回 ArgumentNullException 例外狀況。
導入的版本
.NET 8 Preview 1
先前的行為
provider
參數允許 null
值。 在某些情況下,仍會正確建立指定的類型。
新的行為
當 provider
為 null
時,系統會擲回 ArgumentNullException 例外狀況。
中斷性變更的類型
此變更為行為變更。
變更原因
我們已修正參數驗證以及建構函式比對問題,以符合 CreateInstance 的預期用途。 CreateInstance()
方法具有不可為 Null 的 provider
參數,因此通常預期不允許 null
提供者。
建議的動作
傳遞 provider
引數的非 Null IServiceProvider。 如果提供者也實作 IServiceProviderIsService,則可以透過該引數取得建構函式引數。
或者,如果您的情節不需要相依性插入,因為 IServiceProvider 是 null
,請改用 Activator.CreateInstance。
受影響的 API
- Microsoft.Extensions.DependencyInjection.ActivatorUtilities.CreateInstance<T>(IServiceProvider, Object[])
- Microsoft.Extensions.DependencyInjection.ActivatorUtilities.CreateInstance(IServiceProvider, Type, Object[])