我有以下代码:

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添加非通用基接口并存储该接口。

10-08 00:56