Tasks
和
Handlers
. 任务将从系统的不同部分发送到处理程序,并最终返回一个值。
我们已经有了一个松散类型的系统,它已经变成了一堆杂乱无章的东西(任务启动器通常来自本质上是插件的第三方组件这一事实大大加剧了这个问题)。
喜欢
. 问题在于一些语法。
以下是我得到的(为了清晰起见,扩展了通用名称):
interface ITask<ReturnType> { }
interface ITaskHandler<TaskType, TaskReturnType> where TaskType : ITask<TaskReturnType>
{
TaskReturnType PerformTask(TaskType task);
}
ITask
是泛型,并且声明的泛型参数
伊塔斯克
ITaskHandler<ITask>
. 这意味着每个
TaskHandler
伊塔斯克
声明任务处理程序的最大缺点是会导致一些相当丑陋的签名。。。
class SpecificTask : ITask<Dictionary<Type,Delegate>>
{
}
class SpecificHandler : ITaskHandler<SpecificTask, Dictionary<Type, Delegate>>
{
public Dictionary<Type, Delegate> PerformTask(SpecificTask task)
{
return new Dictionary<Type, Delegate>();
}
}
我的问题是:既然
SpecificTask
SpecificHandler
interface ITaskHandler<TaskType> where TaskType : ITask
{
// pulling TaskReturnType out of thin air...
TaskReturnType PerformTask(TaskType task);
}
class SpecificHandler : ITaskHandler<SpecificTask>
{
public Dictionary<Type, Delegate> PerformTask(SpecificTask task)
{
return new Dictionary<Type, Delegate>();
}
}
…如果是,我将如何声明
PerformTask
当类型包含在
具体任务
?