【发布时间】:2012-05-28 01:59:02
【问题描述】:
这与我前段时间提出的问题有些相同: How to let a method accept two types of data as argument?
然而目前的情况却大相径庭。
拿着这个:
public FormResourceSelector(Dictionary<string, Effect> resourceList, string type)
好吧,没问题。 现在我尝试运行它:
FormResourceSelector frs = new FormResourceSelector(AreaEffect.EFFECTS, "Area effect");
FormResourceSelector frs2 = new FormResourceSelector(DistanceEffect.EFFECTS, "Distance effect");
AreaEffect 和 DistanceEffect(自定义类)都派生自 Effect。
public class AreaEffect : Effect
{
public static Dictionary<string, AreaEffect> EFFECTS = new Dictionary<string, AreaEffect>();
...
}
由于某种原因,在创建新的 FormResourceSelector 实例时出现以下错误:
Argument 1: cannot convert from 'System.Collections.Generic.Dictionary<string,SCreator.AreaEffect>' to 'System.Collections.Generic.Dictionary<string,SCreator.Effect>'
在:
new FormResourceSelector(AreaEffect.EFFECTS, "Area effect");
我怀疑字典是一种骚扰,但我真的不知道如何解决这个问题。
编辑:最简单的方法是在我给出的第一个代码 sn-p 中允许将 Dictionary 和 Dictionary 作为 resourceList 输入。
【问题讨论】:
-
您是否尝试将输入转换为 (Effect)AreaEffect.EFFECTS ?
-
我还需要存储在 AreaEffect 中的“特殊”数据,而不仅仅是普通的 Effect 数据。恐怕很难解释。