这是我的示例界面:
public interface IJob<T, R>
where T : IStep
where R : IDelivery
{
T Step { get; set; }
R Delivery { get; set; }
}
这是我的示例实现
public class ImageJob<T, R> : IJob<T, R>
where T : ImageStep
where R : ImageDelivery
{
public T Step { get; set; }
public R Delivery { get; set; }
}
ImageStep和ImageDelivery都实现了各自的接口(IStep、IDelivery)
现在我要做的是接口我所有的存储库方法。我们以这个方法为例:
public void CreateJob(IJob<IStep, IDelivery> job);
所以我创建了一个新的:
var job = new ImageJob<ImageStep, ImageDelivery>
{
...
}
然后我尝试将其传递给存储库方法:
repository.CreateJob(job);
我收到一条错误消息:
Unable to cast ImageJob<ImageStep, ImageDeliver> to type IJob<IStep, Idelivery>
有人可以向我解释为什么这会引发错误吗?我实施和连接完全错误吗?
我正在尝试做的事情有一个优雅的解决方案吗?
我想用不同的Step和Delivery方法等抽象出每个Job。这可能是其他方式吗?还是我完全错过了什么?