【发布时间】:2019-10-28 05:56:21
【问题描述】:
我有以下方法可以正常工作,但我相信我们可以通过一些方法摆脱这些 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# 版本?在 C# 7 及更高版本中,您可以使用模式匹配
switch语句 -
我使用的是最新的 C# 版本
-
在管理中获取一个 ArrayList 属性。使用 Enumerable.OfType() 过滤并添加/设置 sessionProperty 变量。
-
听起来是策略模式的好地方。除此之外,不要比较类型名称,直接比较类型即可。
-
@User 最新发布的版本是 7.3。最新的 preview 版本是 8.0。我假设您使用 C# 7.3,或者至少是 C# 7?
标签: c# asp.net-mvc optimization c#-7.3