小编fah*_*hmi的帖子

避免如果其他条件

我想重构以下代码以避免if ... else以便每次进入新的调查类型时都不必更改方法(开放/封闭原则).以下是我正在考虑重构的一段代码:

if (surveyType == SurveySubType.Anonymous)
{
    DoSomething(param1, param2, param3);

}
else if (surveyType == SurveySubType.Invitational)
{
    DoSomething(param1);
}
else if (surveyType == SurveySubType.ReturnLater)
{    
    DoSomething(param1);
}
Run Code Online (Sandbox Code Playgroud)

为了解决这个问题,我添加了以下类:

    public abstract class BaseSurvey
{
            public string BuildSurveyTitle()
            {
             ...doing something here
            }

    public abstract void DoSomething(int? param1,int?  param2,int?  param3);
}
public class InvitationalSurvey: BaseSurvey
{
    public override void DoSomething(int? param1,int?  param2,int?  param3)
    {
    //I don't need param2 and param3 here

    }
}


public class ReturnLaterSurvey: BaseSurvey
{
    public override void …
Run Code Online (Sandbox Code Playgroud)

c# oop open-closed-principle solid-principles

15
推荐指数
2
解决办法
2307
查看次数

这个操作线程安全吗?

在以下示例中,单击"提交"按钮时,静态变量Count的值将递增.但这个操作线程安全吗?是否正在使用Appliation对象进行此类操作?这些问题也适用于Web表单应用程序.

单击"提交"按钮时,计数似乎总是增加.

查看(剃刀):

@{
    Layout = null;
}
<html>

<body>
    <form>
        <p>@ViewBag.BeforeCount</p>
        <input type="submit" value="Submit" />
    </form>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

控制器:

public class HomeController : Controller
{
    public ActionResult Index()
    {
        ViewBag.BeforeCount = StaticVariableTester.Count;
        StaticVariableTester.Count += 50;
        return View();
    }     
}
Run Code Online (Sandbox Code Playgroud)

静态类:

public class StaticVariableTester
{
    public static int Count;
}
Run Code Online (Sandbox Code Playgroud)

c# asp.net multithreading

12
推荐指数
2
解决办法
1063
查看次数