【发布时间】:2017-05-19 14:29:42
【问题描述】:
我有一本字典,其中键和值都是Type 类型,就像这样...
private static Dictionary<Type, Type> myDict;
我要做的是将第二个 Type 限制为仅是从 FrameworkElement 继承的类型。
请注意,我不是在讲述 FrameworkElement 实例,我只是尝试存储从 FrameworkElement 派生的 Type 类型的对象,从而使以下陈述为真...
var isTypeStorable = typeof(FrameworkElement).IsAssignableFrom(FooType);
这样可以吗?
顺便说一句,是的,我知道我可以在添加到字典之前使用上述内容进行运行时检查(这就是我现在正在做的事情)。我想知道该语言中是否有任何功能可以让我在编译时限制它。
【问题讨论】:
-
AFAIK 不,没有。您可以创建一个专门的字典,覆盖
Add和AddRange方法,如果输入错误则抛出,但这仍然只提供运行时错误检查。我几乎想知道是否有更好的方法来实现你的最终目标,也许使用工厂或某种 DI?您能详细说明一下字典是如何使用的吗? -
这正是我目前正在做的事情。这更像是对作为语言特征的一般概念/能力的疑惑。
-
通用约束没有帮助?类似于
T : FrameworkElement -
@MrinalKamboj 没有
T。我们正在这里处理Type的实例。 -
@MrinalKamboj,换句话说,它是
T : Type,但我正试图进一步将其限制为特定类型。
标签: c# generics type-conversion