如何通过“词典”作为字典

问题描述:

新到C#和#1 ......请随时指出这应该是不同的或其他地方问如何通过“词典”作为字典<x,Interface>”

考虑:

public interface IPoint {...} 
public struct DeliveryPoint : IPoint {...} 

和生成一个字典具有大量的投递点代码:

... 
Dictionary<uint,DeliveryPoint> dict = new Dictionary<uint,DeliveryPoint>(); 
... 

的点现在需要被传递到例程requir ES接口类型:

public void doSomething(Dictionary<uint,IPoint> dict) { ...} 

想过我可以做这样的事情:

doSomething(dict); 

只有解决办法,我发现是创建一个新的列表,并复制所有这些似乎点击败实施界面的全部目的。

有没有更好的方法?

+1

问题是IDictionary不是协变的,它是不变的。 – Shoe 2015-04-04 02:22:06

+1

最简单的变化就是使它成为'新词典()'。 – user2864740 2015-04-04 02:22:44

+0

注意:“创建一个新的列表并复制所有的点”听起来像是一个奇怪的解决方案,通过'字典'...... – 2015-04-04 02:35:23

使该方法通用于类型实现接口的值。

public void DoSomething<TPoint>(IDictionary<uint, TPoint> dict) where TPoint : IPoint 
{ 
    // do stuff 
} 
+0

这很好。谢谢! – Mark 2015-04-04 03:54:47