我有一个通用方法:
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”的装箱转换” >
答案 0 :(得分:1)
您有约束TRequest : IJobRequest
,这意味着type参数应该继承/实现接口IJobRequest
,显然int
类型不会继承该接口。
您需要创建一个从该接口继承的类型,然后可以在方法调用中将该类型用作参数。
仅作为示例来说明它,就像:
public class MyType : IJobRequest
{
}
然后:
MyType instance = new MyType();
_jobScheduler.Queue<MyType>(instance);
您还需要在类型参数上应用new()
constraint,以允许在无参数构造函数中使用类型。
或者,您也可以删除通用参数上的约束:
public JobKey Queue<TRequest>(TRequest request)
希望它能给您带来灵感。