如何通过“词典”作为字典”
问题描述:
新到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);
只有解决办法,我发现是创建一个新的列表,并复制所有这些似乎点击败实施界面的全部目的。
有没有更好的方法?
答
使该方法通用于类型实现接口的值。
public void DoSomething<TPoint>(IDictionary<uint, TPoint> dict) where TPoint : IPoint
{
// do stuff
}
+0
这很好。谢谢! – Mark 2015-04-04 03:54:47
问题是IDictionary不是协变的,它是不变的。 – Shoe 2015-04-04 02:22:06
最简单的变化就是使它成为'新词典()'。 –
user2864740
2015-04-04 02:22:44
注意:“创建一个新的列表并复制所有的点”听起来像是一个奇怪的解决方案,通过'字典'...... –
2015-04-04 02:35:23