Как применять комбинированную технику с условием if

Синтаксис кода C# ниже

        public void Cancel()
        {

            // If reservation already started throw exception
            if (DateTime.Now > From)
            {
                throw new InvalidOperationException("It's too late to cancel.");
            }
//for gold customer IsCanceled= false
            if (IsGoldCustomer() && LessThan(24))
            {
                IsCanceled = false;
            }
//for not gold customer IsCanceled= true
            if (!IsGoldCustomer() &&LessThan(48))
            {

                IsCanceled = true;
            }

        }

        private bool IsGoldCustomer()
        {
            return Customer.LoyaltyPoints > 100;
        }

        private bool LessThan(int maxHours)
        {
            return (From - DateTime.Now).TotalHours < maxHours;
        }

Комментарий описывает бизнес-логику, хочу объединить условие if (IsGoldCustomer() && LessThan(24)) и if (!IsGoldCustomer() &&LessThan(48)). Есть какие-нибудь предложения как?

Изменено, если условие ниже, но изменение не удовлетворяет моим требованиям.

//for gold customer IsCanceled= false
            IsCanceled = !(IsGoldCustomer() && LessThan(24));
//for not gold customer IsCanceled= true
            IsCanceled = !IsGoldCustomer() &&LessThan(48);

1 ответ

Решение
IsCancelled = IsGoldCustomer()? !LessThan( 24 ) : !LessThan( 48 );

или даже:

IsCancelled = !LessThan( IsGoldCustomer()? 24 : 48 );
Другие вопросы по тегам