重写下面方法的更好方法
Better way of rewriting below method
我有以下方法确实有效,但我相信我们可以通过一些如何摆脱这些 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 语句,例如:
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;
}
我有以下方法确实有效,但我相信我们可以通过一些如何摆脱这些 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 语句,例如:
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;
}