2018年02月01日
川俣晶の縁側ソフトウェア技術雑記total 755 count

C#で汎用のインターフェースを設計したいが、呼び出し先が同期処理だったり非同期処理だったり一定しない問題

Written By: 川俣 晶連絡先

問題 §

 C#で汎用のインターフェース(C#のinterface機能という意味ではない)を設計したいが、呼び出し先が同期処理だったり非同期処理だったり一定しない。つまり、型が一定しないのでインターフェースが定義できない。

原因 §

 非同期メソッドは戻り値がTaskクラスであり、同期メソッドとは型指定が変化してしまうから。

解決 §

 全て非同期に統一する。同期メソッドは何もしないダミーの非同期メソッドを呼ぶことで強引に非同期扱いに変更する。

 以下は何もしないダミーの非同期メソッドの例。

    static class Dummy

    {

        internal static async Task Nop() => await Task.Delay(0);

    }

感想 §

「オーバーヘッドが大きくてあまりエレガントではないな」

「取りあえず、定義が書けないよりはマシということで」

Facebook

キーワード【 川俣晶の縁側ソフトウェア技術雑記
【技術雑記】の次のコンテンツ
2018年
02月
03日
BitmapContext.FromPixelBufferメソッドは存在しない問題
3days 3 count
total 681 count
【技術雑記】の前のコンテンツ
2018年
01月
26日
UWPの証明書を更新するとストアから拒否される問題
3days 1 count
total 814 count
2018年02月01日
川俣晶の縁側ソフトウェア技術雑記total 755 count

C#で汎用のインターフェースを設計したいが、呼び出し先が同期処理だったり非同期処理だったり一定しない問題

Written By: 川俣 晶連絡先

問題 §

 C#で汎用のインターフェース(C#のinterface機能という意味ではない)を設計したいが、呼び出し先が同期処理だったり非同期処理だったり一定しない。つまり、型が一定しないのでインターフェースが定義できない。

原因 §

 非同期メソッドは戻り値がTaskクラスであり、同期メソッドとは型指定が変化してしまうから。

解決 §

 全て非同期に統一する。同期メソッドは何もしないダミーの非同期メソッドを呼ぶことで強引に非同期扱いに変更する。

 以下は何もしないダミーの非同期メソッドの例。

    static class Dummy

    {

        internal static async Task Nop() => await Task.Delay(0);

    }

感想 §

「オーバーヘッドが大きくてあまりエレガントではないな」

「取りあえず、定義が書けないよりはマシということで」

Facebook

キーワード【 川俣晶の縁側ソフトウェア技術雑記
【技術雑記】の次のコンテンツ
2018年
02月
03日
BitmapContext.FromPixelBufferメソッドは存在しない問題
3days 3 count
total 681 count
【技術雑記】の前のコンテンツ
2018年
01月
26日
UWPの証明書を更新するとストアから拒否される問題
3days 1 count
total 814 count
【技術雑記】のコンテンツ全リスト【技術雑記】の表紙

このコンテンツを書いた川俣 晶へメッセージを送る

[メッセージ送信フォームを利用する]

メッセージ送信フォームを利用することで、川俣 晶に対してメッセージを送ることができます。

この機能は、100%確実に川俣 晶へメッセージを伝達するものではなく、また、確実に川俣 晶よりの返事を得られるものではないことにご注意ください。

このコンテンツへトラックバックするためのURL

http://mag.autumn.org/tb.aspx/20180201170617
サイトの表紙【技術雑記】の表紙【技術雑記】のコンテンツ全リスト 【技術雑記】の入手全リスト 【技術雑記】のRSS1.0形式の情報このサイトの全キーワードリスト 印刷用ページ

管理者: 川俣 晶連絡先

Powered by MagSite2 Version 0.27 (Alpha-Test) Copyright (c) 2004-2018 Pie Dey.Co.,Ltd.