Jam*_*mie 5 c# asp.net properties
我正在升级系统并正在浏览另一个开发人员代码(C#中的ASP.NET).
我遇到了这个:
private ReferralSearchFilterResults ReferralsMatched
{
get
{
if (Session[SESSION_REFERRAL_SEARCHFILTERRESULTS] == null || Session[SESSION_REFERRAL_SEARCHFILTERRESULTS].GetType() != typeof(ReferralSearchFilterResults))
return null;
else
return (ReferralSearchFilterResults)Session[SESSION_REFERRAL_SEARCHFILTERRESULTS];
}
set
{
if (value == null)
{
Session[SESSION_REFERRAL_SEARCHFILTERRESULTS] = value;
}
else if (value.GetType() == typeof(ReferralSearchFilterResults))
{
Session[SESSION_REFERRAL_SEARCHFILTERRESULTS] = value;
}
}
}
Run Code Online (Sandbox Code Playgroud)
检查设置器上的类型是否不必要?当然,如果我将属性设置为ReferralSearchFilterResults对象之外的其他东西,代码甚至不会编译?我错过了什么,或者我认为只要使用以下方法就可以实现:
set
{
Session[SESSION_REFERRAL_SEARCHFILTERRESULTS] = value;
}
Run Code Online (Sandbox Code Playgroud)
原始代码阻止 ReferralSearchFilterResults 的任何子类设置或获取该属性。这是因为将返回所引用的对象的value.GetType()实际值。如果该 Type 是 ReferralSearchFilterResults 的子类,那么它不会 equals 。Typevaluetypeof(ReferralSearchFilterResults)
我不确定您的背景,所以我无法告诉您这是否是正确的行为。如果这是预期的行为,它确实闻起来有点脏,因为它会默默地忽略子类的任何分配。但如果没有更多背景,我无法真正做出判断。