可能重复:
任何人都知道缺少枚举通用约束的好方法?
C#不允许对Enums 进行类型约束的原因是什么?我确信疯狂背后有一种方法,但我想明白为什么不可能.
以下是我希望能够做到的(理论上).
public static T GetEnum<T>(this string description) where T : Enum
{
...
}
Run Code Online (Sandbox Code Playgroud) 如何在不使用C#中的switch或if语句的情况下处理枚举?
例如
enum Pricemethod
{
Max,
Min,
Average
}
Run Code Online (Sandbox Code Playgroud)
......我有一篇文章
public class Article
{
private List<Double> _pricehistorie;
public List<Double> Pricehistorie
{
get { return _pricehistorie; }
set { _pricehistorie = value; }
}
public Pricemethod Pricemethod { get; set; }
public double Price
{
get {
switch (Pricemethod)
{
case Pricemethod.Average: return Average();
case Pricemethod.Max: return Max();
case Pricemethod.Min: return Min();
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
我想避免使用switch语句并使其成为通用语句.
对于特定的Pricemethod,请调用特定的计算并将其返回.
get { return CalculatedPrice(Pricemethod); }
Run Code Online (Sandbox Code Playgroud)
这里使用的模式可能有人有一个很好的实现想法.已经搜索了状态模式,但我不认为这是正确的.