c# - 我可以在这里用什么来模拟? (通配符)C# 中的泛型?

标签 c# generics wildcard

我有以下代码:

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/

相关文章:

c# - 为时间声明变量

c# - 如何从包含多个对象的 JSON 文件中反序列化

java - 如何将泛型接口(interface)实现为非泛型类 Java

c# - 如何使用具有特定子目录的通配符扫描目录

javascript - 如何在angularjs中使用通配符搜索?

excel - 如何使用Excel的 "=SUMPRODUCT(--ISNUMBER(SEARCH..."函数排除 'complicated compounded'结果?

Javascript 将 null 传递给 MVC Controller

c# - 为什么当我尝试使用 Windows Phone 上传图片时,它上传了一个随机的东西?

Java 泛型 ECLIPSE 错误?

c# - 没有唯一键的字典