IAsyncDisposable、パターンマッチだから、別にIAsyncDisposableインターフェースを実装してなくてもいい説、半分正解で半分誤りでした。
以前書いた記事
IAsyncDisposable、パターンマッチだから、別にIAsyncDisposableインターフェースを実装してなくてもいい説、半分正解で半分誤りでした。
結論から言うと、
await using var productService = new ProductService();
みたいに、普通にawait using でInstance生成する場合にはパターンマッチングが機能します。
なので、クラスに、
public async ValueTask DisposeAsync() {
がいれば、await usingって書けます。
逆にASP.NET CoreのDIContainerに登録して使う場合は、パターンマッチングだとだめで、IAsyncDisposableを実装している必要があります。(2019年12月3日時点)
なので、DIから挿してもらう場合はIAsyncDisposableの実装が現状必要です。 ASP.NET CoreはDI管理が前提で作られてるWeb Frameworkのはずなのでこの辺パターンマッチングでどうにかなりませんかね?
インターフェースを付けないほうが処理上のペナルティーもないはずなので何卒対応頂けると嬉しいというお気持ち。