这更像是一个讨论类型的问题。我正在开发一个具有多个接口的系统,这些接口可以在不同的程序集中实现,并且这些程序集将根据需要在运行时加载。这种接口的一个例子是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
. 那应该有两个功能:GeneratePassword
和ValidatePassword
。将GeneratePassword
根据实现程序集定义的算法生成密码。这ValidatePassword
是我们需要的要求,因为不同的客户端具有不同的密码复杂性要求。生成密码后,必须对其进行验证。
现在,最近,我们切换到了 .NET Framework 4.5 和 Visual Studio 2012。这两种方法都可能很耗时。GeneratePassword
可以生成一个简单的 AlphaNumeric 密码或密码的多页矩阵。同样,ValidatePassword
可能会通过 HTTP 将生成的密码发送到客户端密码验证服务器/API。目前我们正在使用 BeginInvoke/EndInvoke 模式。我想拥有GeneratePasswordAsync
异步ValidatePasswordAsync
等待模式。他们将带着各自完成和取消的选项/事件
问:我可以在接口级别使用 async-await 模式吗?
我们针对不同的软件、平台和操作系统进行密码重置。所以这就是通用生成器的原因。
我的下一个问题很可能是这两种方法的签名,因为我试图涵盖广泛的密码类型,并且需要了解返回类型应该满足什么;一个简单Object
的或一个<T>