【发布时间】:2012-09-24 05:40:08
【问题描述】:
可能重复:
Create Generic method constraining T to an Enum
Enum type constraints in C#
考虑以下类:
public class Transition<TState>
{
public Transition ()
{
if (!typeof(TState).IsEnum)
throw (new ArgumentException("[TState] has to be of type [System.Enum]."));
}
}
理想情况下,这应该声明为:
public class Transition<TState> where TState: System.Enum
{
}
上述内容当然会产生编译时错误。我的问题是为什么这被定为非法。大多数消息来源解释说这是非法的,但没有解释原因。有什么想法吗?
【问题讨论】:
-
这个话题已经讨论过很多次了。请在发布问题之前进行搜索。 Create Generic method constraining T to an Enum 的可能重复项。还有一个骗子:stackoverflow.com/questions/7244/…
-
@DarinDimitrov:它们不是这两个问题的重复。事实上,它是 Rafal 指出的那个的副本。我不是在寻找解决方法。只是在寻找它背后的原因。编辑:该问题的链接是here。
-
@RaheelKhan,这个功能是在 CIL 级别实现的,只是没有在 C# 中实现。如果您阅读我的第二个欺骗链接,您会发现有一个解决方法,正如 Jon Skeet 所说明的那样,他写了一个好帮手。看看他的博文:msmvps.com/blogs/jon_skeet/archive/2009/09/11/1722426.aspx
-
我知道这很有帮助。如果您在发布问题之前进行了搜索,那将是谷歌的第一次或第二次点击。下次请这样做。
标签: c# .net generics enums constraints