我得到具体的例外是:无法施展的MyType <T>到MYTYPE <object>
无法转换
NbtByte
类型的对象键入INbtTag<System.Object>
在此行中:
tag = (INbtTag<object>)new NbtByte(stream);
其中tag
被声明为:
INbtTag<object> tag;
而且NbtByte
被定义为:
public class NbtByte : INbtTag<byte>
其中IBtTag
是:
public interface INbtTag<out T>
我想通过声明它作为out T
我将能够做这样的事情。
基本上,我想要的IbtTag<T>
秒的字典,
var dict = new Dictionary<string, INbtTag<object>>();
但是其中T
是不同类型的(因此我object
声明它)。这可能吗?
这就是我最初的做法,但非泛型缺少我想要的“Value”属性。我如何将它暴露为'object',然后“覆盖”类型为'T'?也许使用'new'关键字? – mpen 2012-02-18 05:35:43
查看实施示例的更新。 – 2012-02-18 05:47:24
啊......我想这解释了为什么我一直使用IEnumerables的模式!我想你也需要在'T GetValue()'上使用'new'关键字。这不太好,但我想这是我们能做的最好的。谢谢你的帮助! – mpen 2012-02-18 05:53:59