3
コードの非同期バージョンと同期バージョンの両方が必要な場合に、DRY原則に違反しないようにするにはどうすればよいですか?
同じロジック/メソッドの非同期バージョンと同期バージョンの両方をサポートする必要があるプロジェクトに取り組んでいます。だから例えば私は持っている必要があります: public class Foo { public bool IsIt() { using (var conn = new SqlConnection(DB.ConnString)) { return conn.Query<bool>("SELECT IsIt FROM SomeTable"); } } public async Task<bool> IsItAsync() { using (var conn = new SqlConnection(DB.ConnString)) { return await conn.QueryAsync<bool>("SELECT IsIt FROM SomeTable"); } } } これらのメソッドの非同期ロジックと同期ロジックは、1つは非同期でもう1つはそうでないことを除いて、すべての点で同じです。このようなシナリオでDRYの原則に違反しないようにする正当な方法はありますか?GetAwaiter()。GetResult()を非同期メソッドで使用して、それを同期メソッドから呼び出すことができると人々が言っているのを見ましたか?そのスレッドはすべてのシナリオで安全ですか?これを行う別のより良い方法はありますか、それともロジックを複製することを余儀なくされていますか?
15
c#
.net
asynchronous