我有以下代码:
using System;
using System.Collections.Generic;
using SpiShared;
namespace SpiController.Queue
{
public class FakeQueueService : IQueueService
{
public FakeQueueService()
{
this.MessagesDeleted = new List<QueueMessage<?>>();
}
public IList<QueueMessage<?>> MessagesDeleted {
get;
private set;
}
public void Delete<T>(QueueMessage<T> message)
{
this.MessagesDeleted.Add(message); // doesn't work
}
}
}
在
Delete
上,我实际上不在乎T
是什么,我只关心要存储提供的message
对象。如何在此处使用泛型呢?那有可能吗?实际的
IQueueService
接口是:using System;
using SpiShared;
namespace SpiController.Queue
{
public interface IQueueService
{
Option<QueueMessage<T>> Poll<T>(Func<string,T> parser);
void Push(string queueUrl, string message);
void Delete<T>(QueueMessage<T> message);
}
}
最佳答案
你不能
相反,您可以使整个类通用(并使Delete()
非通用),也可以向QueueMessage
添加非通用基接口并存储该接口。