相关疑难解决方法(0)

C#中的枚举类型约束

可能重复:
任何人都知道缺少枚举通用约束的好方法?

C#不允许对Enums 进行类型约束的原因是什么?我确信疯狂背后有一种方法,但我想明白为什么不可能.

以下是我希望能够做到的(理论上).

public static T GetEnum<T>(this string description) where T : Enum
{
...
}
Run Code Online (Sandbox Code Playgroud)

.net c# enums

149
推荐指数
4
解决办法
5万
查看次数

用于状态处理的多态Enum

如何在不使用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)

这里使用的模式可能有人有一个很好的实现想法.已经搜索了状态模式,但我不认为这是正确的.

c# polymorphism enums design-patterns strategy-pattern

6
推荐指数
2
解决办法
3280
查看次数