Присваивая значения переменным из элементов управления, где «пусто», должен быть лучший способ! - PullRequest
1 голос
/ 18 февраля 2010

У меня есть приложение winform для домашнего использования, где приведенное ниже очень распространено.

            Int32? afhAgreement = null;
            if (!lkuReveiewAFHAgreement.Text.Equals(string.Empty))
            {
                afhAgreement = (Int32)lkuReveiewAFHAgreement.EditValue;
            }
            DateTime? afhAgreementDate = null;
            if (datAFHAgreementCompleted.Text != String.Empty)
            {
                afhAgreementDate = (DateTime?)datAFHAgreementCompleted.EditValue;
            }
            Int32? crisisPlan = null;
            if (!lkuReview6MonthCrisisPlan.Text.Equals(string.Empty))
            {
                crisisPlan = (Int32)lkuReview6MonthCrisisPlan.EditValue;
            }
            DateTime? crisisPlanDate = null;
            if (dat6MonthCrisisPlanReviewed.Text != String.Empty)
            {
                crisisPlanDate = (DateTime?)dat6MonthCrisisPlanReviewed.EditValue;
            }
            Int32? riskAgreement = null;
            if (!lkuReviewRiskAssessment.Text.Equals(string.Empty))
            {
                riskAgreement = (Int32)lkuReviewRiskAssessment.EditValue;
            }
            DateTime? riskAgreementDate = null;
            if (!datRiskAssessmentReviewed.Text.Equals(string.Empty))
            {
                riskAgreementDate = (DateTime?)datRiskAssessmentReviewed.EditValue;
            }

Поскольку все эти переменные могут быть NULL, кажется, что это нелепый способ сделать это. Разве нет Convert this object and Default to NULL?

Кстати, EditValue - это объект, хотя я считаю, что у меня та же проблема, даже если я использую свойство Text элемента управления.

Итак, есть ли лучший способ? Это то, что я мог бы упростить с помощью Extension Methods?

Ответы [ 2 ]

4 голосов
/ 18 февраля 2010

Просто добавьте несколько повторно используемых функций ... например:

static T? GetValue<T>(YourControlType control) where T : struct
{
    if (string.IsNullOrEmpty(control.Text)) return null;
    return (T)control.EditValue;
}

И затем (например):

DateTime? crisisPlanDate = GetValue<DateTime>(dat6MonthCrisisPlanReviewed);

(где YourControlType - это любой элемент управления, который вы используетес string .Text и object .EditValue)

1 голос
/ 18 февраля 2010

как то так ..

afhAgreement = (!lkuReveiewAFHAgreement.Text.Equals(string.Empty)) ? (Int32)lkuReveiewAFHAgreement.EditValue : null;

riskAgreement = (!lkuReviewRiskAssessment.Text.Equals(string.Empty))  ? (Int32)lkuReviewRiskAssessment.EditValue : null;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...