为什么不能传递
Dictionary<string, PinkLady>()
进入我的Supply(Dictionary<string, IApple> apples)
方法?
public interface IApple { }
public class PinkLady : IApple { }
public void Supply(Dictionary<string, IApple> apples) { }
public void TestMethod()
{
//Working
Supply(new Dictionary<string, IApple>());
//Not working
Supply(new Dictionary<string, PinkLady>());
}
我总是收到错误:
无法从Dictionary转换为Dictionary。 PinkLady与预期类型IApple不匹配。
答案 0 :(得分:3)
因为Dictionary<string, IApple>
和Dictionary<string, PinkyLady>
类型不是同一类型。 PinkyLady
可能来自IApple
,但这是Dictionary
通用的背景。它们编译成两种不同的类型。
您可以采取的措施是使Support
成为具有约束的通用方法:
public void Supply<T>(Dictionary<string, T> apples) where T : IApple { /* ... */ }