у меня есть метод, который похож на это:
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;
}
Там какой-либо путь состоит в том, чтобы консолидировать это, поскольку единственной отличающейся вещью являются имена свойства?
Создайте отдельный метод 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;
}
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]
, которые, если я правильно понимаю ваш код, должны совпадать с типом of parser.Parse (Описание)
.
Предполагая, что parser.Parse ()
возвращает тот же класс, что и Servings []
, вы можете создать нулевой объект этого типа, для которого оба X и Y равны нулю. Тогда у вас может быть функция, которая возвращает первый элемент Servings []
, если он существует, или новый FoodDescriptionParser.Parser (Description)
, если Description
существует , или, наконец, этот нулевой объект. И соберите X или Y по мере необходимости.