インターフェイスをパラメータとして受け入れるメソッドを呼び出す必要があります。パラメータとして使用しているオブジェクトはインターフェイスを実装していますが、それでもコンパイルエラーが発生します。私は何が間違っているのですか?
public class ViewModel
{
public ViewModel()
{
QueueManager<CFMessage<CFQueueItem>, CFQueueItem> q = new QueueManager<CFMessage<CFQueueItem>, CFQueueItem>();
DoSomething(q); // This line does not compile: Cannot convert from QueueManager<CFQueueItem> to QueueManager<IQueueItem>
}
public void DoSomething(QueueManager<IQueueMessage<IQueueItem>, IQueueItem> queueManager)
{
}
}
public interface IQueueMessage<T> where T : IQueueItem
{
int ID { get; set; }
}
public interface IQueueItem
{
int ID { get; set; }
}
public class CFMessage<CFQueueItem> : IQueueMessage<CFQueueItem> where CFQueueItem : IQueueItem
{
public int ID { get; set; }
}
public class CFQueueItem : IQueueItem
{
public int ID { get; set; }
}
public class QueueManager<T, Q>
where T : IQueueMessage<Q>
where Q : IQueueItem
{
}