Рефакторинг членов тела выражения C#C#

Место общения программистов C#
Ответить
Anonymous
 Рефакторинг членов тела выражения C#

Сообщение Anonymous »

У меня есть класс с набором членов тела выражения, которые на самом деле кажутся основанными на общем внутреннем классе, но я не могу придумать, как их реорганизовать/сгруппировать.

Код: Выделить всё

    public decimal SalesTotalCurrent => GoalsDepartmentSalesRows.Sum(x => x.SalesCurrent) ?? 0;
public decimal SalesTotalGoal => GoalsDepartmentSalesRows.Sum(x => x.SalesGoal) ?? 0;
public decimal SalesTotalLast => GoalsDepartmentSalesRows.Sum(x => x.SalesLastYear) ?? 0;
public decimal SalesTotalTrend => TrendPeriodDays == 0 ? 0 : (int?)((TrendTotalSales / TrendPeriodDays) * Days) ?? 0;

public decimal QuantityTotalCurrent => GoalsDepartmentSalesRows.Sum(x => x.QuantityCurrent) ?? 0;
public decimal QuantityTotalLast => GoalsDepartmentSalesRows.Sum(x => x.QuantityLastYear) ?? 0;
public decimal QuantityTotalGoal => (int)(CustomerCountGoal * IptGoal);
public decimal QuantityTotalTrend => TrendPeriodDays == 0 ? 0 : (int?)((TrendTotalQuantity / TrendPeriodDays) * Days) ?? 0;

public decimal ConversionCurrent => (DoorCountCurrent == 0 ? 0 : (CustomerCountCurrent / DoorCountCurrent)) ?? 0;
public decimal ConversionLast => (DoorCountLast == 0 ? 0 : (CustomerCountCurrent / DoorCountCurrent)) ?? 0;
public decimal ConversionGoal { get; set; }
public decimal ConversionTrend => (TrendTotalDoorCount == 0 ? 0 : (CustomerCountCurrent / TrendTotalDoorCount)) ?? 0;
Это всегда группа из 4 десятичных знаков (скоро будет 5) с Current, Last, Goal, Trend и вскоре TrendLast. Расчеты меняются, и иногда одно из них можно установить. Существует около 7 наборов из этих 5 значений, и такое ощущение, что класс выходит из-под контроля.
Я хочу сохранить их как выражения на случай, если базовые значения изменятся, что, я думаю, затруднит получение новый внутренний класс невозможен, поскольку у него не будет доступа. Я не могу придумать, как использовать интерфейс, чтобы упростить это. Возможно, каким-то образом можно использовать Func или Expression, но я понятия не имею, как это сделать. Мне бы хотелось получить к нему доступ через что-то вроде MainClass.SalesTotal.Current.
Я просто застрял в отвратительном списке свойств с длинными именами -_-

Подробнее здесь: https://stackoverflow.com/questions/783 ... rs-c-sharp
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»