我有以下代码:
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()
成为非通用),或将非通用基接口(interface)添加到 QueueMessage
并存储它。
关于c# - 我可以在这里用什么来模拟? (通配符)C# 中的泛型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28328624/