これは、ディスカッションタイプの質問です。私は、さまざまなアセンブリに実装できる多数のインターフェイスを備えたシステムで作業しており、それらのアセンブリは、必要に応じて実行時にロードされます。このようなインターフェースの例はですINotifier
。これは、実装する必要がある一般的な通知機能です。
using System;
using System.Collections.Generic;
using System.Linq;
using Company.MainModule.CentralLogging;
namespace Company.NotificationEngine
{
public interface INotifier
{
IAsyncResult BeginInvoke(Dictionary<String, object> parameters,AsyncCallback callBack,object state, LogMaster logMaster);
Dictionary<string,object> EndInvoke(IAsyncResult asyncResult);
}
}
ここで、INotifierの実装例:
namespace Company.NotificationEngine
{
internal class SMSNotification : INotifier
{
#region Class Variables
public IAsyncResult BeginInvoke(Dictionary<string, object> parameters, AsyncCallback callBack, object state, LogMaster logMaster)
{
// Send SMS
return asyncResult;
}
public Dictionary<string, object> EndInvoke(IAsyncResult asyncResult)
{
return null;
}
#region Private Functions
}
}
次に、同じパターンに従って、と呼ばれる汎用パスワードジェネレータを作成しますIGenerator
。これには2つの関数が必要です:GeneratePassword
とValidatePassword
。はGeneratePassword
、実装アセンブリが定義するアルゴリズムに基づいてパスワードを生成します。これValidatePassword
は、クライアントごとに複雑さの異なるパスワード要件があるため、必要な要件です。パスワードが生成されたら、検証する必要があります。
最近、.NETFramework4.5とVisualStudio2012に切り替えました。これらの方法はどちらも時間がかかる場合があります。はGeneratePassword
、単純なAlphaNumericパスワードまたはパスワードの複数ページのマトリックスを生成している可能性があります。同様にValidatePassword
、生成されたパスワードをHTTP経由でクライアントのパスワード検証サーバー/APIに送信している可能性があります。現在、BeginInvoke/EndInvokeパターンを使用しています。async-awaitパターンGeneratePasswordAsync
が欲しいです。ValidatePasswordAsync
彼らはそれぞれの完了したオプション/イベントをキャンセルします
Q:インターフェイスレベルでasync-awaitパターンを使用できますか?
パスワードのリセットには、さまざまなソフトウェア、プラットフォーム、オペレーティングシステムを対象としています。そのため、一般的なジェネレーターです。
次の質問は、さまざまな種類のパスワードをカバーしようとしているため、これら両方のメソッドの署名である可能性が高く、リターンタイプには何で十分かを理解する必要があります。シンプルObject
または<T>