【发布时间】:2018-06-20 13:50:08
【问题描述】:
我有一个通用方法:
public JobKey Queue<TRequest>(TRequest request) where TRequest : IJobRequest{}
IJobRequest:
public interface IJobRequest
{
}
接下来,在foreach循环中我要调用Queue<>()泛型方法:
foreach (var item in campaigns)
{
_jobScheduler.Queue<>();
}
“item”变量是我的自定义类型“Campaign”,并且有一个属性int Id
在foreach 循环中,我想将item.Id 类似参数传递给Queue<>() 方法。
_jobScheduler.Queue<int>(item.Id);
我应该在interface IJobRequest 中进行哪些更改才能这样做:_jobScheduler.Queue<int>(item.Id); 因为现在我有一个错误:“没有从“int”到“IJobRequest”的装箱转换”
【问题讨论】:
-
答案正是它所说的。您指定参数必须实现
IJobRequest。int没有实现IJobRequest。最简单的解决方法是将行更改为public JobKey Queue<TRequest>(int id) where TRequest : IJobRequest{} -
@DavidStockinger:我同意你的说法,尽管此时可以完全删除 Generic 参数,这让我们所有人都想知道它首先在那里做了什么......
标签: c# generics inheritance interface cycle