重写方法的更好方法



我有以下方法确实有效 好的,但我相信我们可以通过一些如何摆脱这些 if 条件来让它变得更好,但不确定如何?

 protected void SaveSession<T>(T sessionProperty, Management management) where T : class
        {
            string propertyType = typeof(T).Name;
            if (propertyType.Equals(typeof(A).Name))
            {
                management.A = sessionProperty as A;
            }
            else if (propertyType.Equals(typeof(B).Name))
            {
                management.B = sessionProperty as B;
            }
            else if (propertyType.Equals(typeof(C).Name))
            {
                management.C = sessionProperty as C;
            }
            Session["mysession"] = management;
        }

我使用的是最新的 C# 版本 7.0

在 C# 7 及更高版本中,您可以使用模式匹配开关语句,例如:

switch(sessionProperty)
{
    case A a:
        management.A=a;
        break;
    case B b:
        management.B=b;
        break;
    case C c:
        management.C=c;
        break;
}

在早期版本中,您可以使用 is 运算符来检查类型,例如:

if (sessionProperty is A)
{
    management.A=(A)sessionProperty;
}
else if (sessionProperty is B)
{
    management.B=(B)sessionProperty;
}

相关内容

  • 没有找到相关文章

最新更新