5

私は次のような方法を持っています:

   private double GetX()
    {
        if (Servings.Count > 0)
        {
            return Servings[0].X;
        }
        if (!string.IsNullOrEmpty(Description))
        {
            FoodDescriptionParser parser = new FoodDescriptionParser();
            return parser.Parse(Description).X;
        }
        return 0;
    }

そして、私は次のような別の方法を持っています:

  private double GetY()
    {
        if (Servings.Count > 0)
        {
            return Servings[0].Y;
        }
        if (!string.IsNullOrEmpty(Description))
        {
            FoodDescriptionParser parser = new FoodDescriptionParser();
            return parser.Parse(Description).Y;
        }
        return 0;
    }

プロパティ名だけが異なるため、これを統合する方法はありますか?

4

3 に答える 3

12

別のGetServing方法を作成します。

private Serving GetServing() {
    if (Servings.Count > 0)
        return Servings[0];

    if (!string.IsNullOrEmpty(Description)) {
        FoodDescriptionParser parser = new FoodDescriptionParser();
        return parser.Parse(Description);
    }
    return null;
}

private double GetX() {
    Serving serving = GetServing();
    if (serving == null) return 0;
    return serving.X;
}

private double GetY() {
    Serving serving = GetServing();
    if (serving == null) return 0;
    return serving.Y;
}
于 2010-04-25T16:40:27.250 に答える
9
private double Get(Func<SomeType, double> valueProvider)
{
    if (Servings.Count > 0)
    {
        return valueProvider(Servings[0]);
    }
    if (!string.IsNullOrEmpty(Description))
    {
        FoodDescriptionParser parser = new FoodDescriptionParser();
        return valueProvider(parser.Parse(Description));
    }
    return 0;
}

次のように使用できます。

var x = Get(value => value.X);
var y = Get(value => value.Y);

備考:SomeTypeは、Servings[0]あなたのコードが のタイプと同じであることを正しく理解している場合のタイプですparser.Parse(Description)

于 2010-04-25T16:40:23.100 に答える
0

parser.Parse()保持する同じクラスを返すと仮定すると、X と Y の両方がゼロであるその型のnull オブジェクトServings[]を作成できます。次に、存在する場合は の最初の要素を返す関数、存在する場合は の最初の要素、または最後にその null オブジェクトを返す関数を作成できます。必要に応じて X または Y を収集します。Servings[]new FoodDescriptionParser.Parser(Description)Description

于 2010-04-25T16:44:00.657 に答える