将类转换为通用接口

时间:2017-01-02 10:40:29

标签: c#-4.0

我有以下界面:

public interface ISendableMessage
{
}

public interface IMessageSenderStrategy<T> where T: class, ISendableMessage
{
    void Send(T message);
}

为了进行测试,我得到了以下来自上面的类:

public class FakeMessage: ISendableMessage
{
}

public class FakeMessageStrategy: IMessageSenderStrategy<FakeMessage>
{
    public void Send(FakeMessage message)
    {
        throw new NotImplementedException();
    }

}

然后我在我的单元测试中尝试向List<IMessageSenderStrategy<IMessageSender>>添加假消息,即使使用显式转换,这也不会像我期望的那样工作 - 演员表返回null!

是否有人知道我如何将FakeMessageStrategy转换为IMessageSenderStrategy<ISendableMessage>以便在列表中存储。我可以使IMessageSenderStrategy非泛型,但如果我可以避免它,我宁愿不要,因为整个项目中会有几个。

我尝试在通用接口参数上使用in关键字而没有运气。

0 个答案:

没有答案