我有以下界面:
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关键字而没有运气。