2013-03-10 95 views
0

我有用c#编写的web应用程序。它由三个项目组成。其中两个是asp.net mvc项目,其中一个是一个简单的项目,只有我在两个mvc项目中使用的类。所以,这两个mvc应用程序引用了第三个项目。静态方法:在这种情况下使用它有什么危险吗?

我有一个非mvc项目中的静态方法,它基本上是这样做的: 它有两个输入参数:string text,MyEntities db。 MyEntities是我的数据库的一个实例,即.edmx文件。

在方法里面,我解析文本,把它分成不同的行,得到它们的一部分。对于那部分,根据用户的情况,我检查db.tblToy中是否有该名称的记录。

对于每个用户都有一个不同的数据库。 因此,我采取user_id并据此,我在相应的数据库,在tblToy表中搜索。我的意思是,如果该方法返回不正确的结果。例如,对于user1,它将在db中检查user2,因为它是静态的。

该方法是静态的。我不会用类实例调用它。我的问题是:这种方法是静态的吗?

+0

为什么它会很危险? – djechlin 2013-03-10 15:51:33

+0

定义“危险”。正如在安全中,攻击者可能会破坏系统中的某些东西,使用它,否则会破坏MVC模式? – christopher 2013-03-10 15:52:09

+0

@djechlin我编辑了这个问题。见最后一部分。 – 2013-03-10 15:53:27

回答

1

不,它是静态的事实并不比实例方法更危险。你用那种方法放什么是重要的。

静态方法和实例方法的唯一区别是,您需要在类的实例上调用一个,而另一个仅在类型本身上调用。

This answer,从主,可能会帮助:

静态方法是不是固有的线程安全的。与实例方法相比,CLR对它们的处理方式与CLR不同的方式不是 。

+0

我认为公共静态方法的危险性实际上只有在方法修改和/或依赖于该类的静态属性时才存在 - 一个在静态和实例之间没有真正改变的规则 - 但它可以*是可能更危险的不是因为它是什么,而是因为开发人员倾向于使用静态方法的方式,而这种方法实际上归结为懒惰(不想新增新对象)。我基本上同意,但进一步资格。 – Sinaesthetic 2015-11-10 19:29:38

+1

所以你同意,但你倒下了我的答案? – 2015-11-10 19:49:40

+0

这不是我的低调 – Sinaesthetic 2015-11-11 16:49:25

1

不,在这种情况下,静态方法没有危险,如果它只处理来自参数的信息。 当方法在静态变量/自动执行的属性上工作时游戏发生变化

相关问题