我有一个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
简化的内容吗?
答案 0 :(得分:4)
只需添加一些可重复使用的功能......例如:
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 :(得分:1)
afhAgreement = (!lkuReveiewAFHAgreement.Text.Equals(string.Empty)) ? (Int32)lkuReveiewAFHAgreement.EditValue : null;
riskAgreement = (!lkuReviewRiskAssessment.Text.Equals(string.Empty)) ? (Int32)lkuReviewRiskAssessment.EditValue : null;