|
本帖最后由 csfeixia 于 2019-11-9 16:44 编辑
在一个Comm类中,定义一个变量,如下
public static string _loginUsername="";
看起来是不是很熟悉,很正常——但是这样错了,坚决不能这样用
因为所有登录这个APP的用户都是用的同一个变量,张三登录时名称是张三,李四显示的是李四,当张三再引用这个变量时,发现已经不再是自己了,这下明白了没。。(我也是当用户数据出问题后才明白,嘿嘿)
那怎么办呢?已经这样做了,那么多的地方引用了这个静态字段,总不能全部改成session取值吧,能不能转换过来,办法肯定是有的,我就用了这个方法,
在原静态中改用属性 取Session中取值,如果在类中,就直接public static string _loginUsername
{
get {
new Smobiler.Core.Controls.MobileForm().Client.Session["变量名"].ToString();
}
set {}
}
改变原赋值模式,以前是静态变量=
现在要改成 Client.Session["xxx"]= 如果在类中,同理
new Smobiler.Core.Controls.MobileForm().Client.Session["变量名"]="";
好歹 完成了,测试了一下,基本放心了
希望后来者不要跟我一样哦,自己坑自己。。。。
以上是全局静态变量,那窗体中的静态变量会不会也有问题?
于是我测试了一下,发现 在窗体中的变量是没有问题的,比如datatable的行数,张三进界面查询出来是10行,李四进同样界面查出来0行,这个时候张三重新取当前的数据行数,是不会变成0行的。当然我是这样处理的,在每一个窗体中
using(dt=静态方法())
{
}
2.带参数的静态方法应该也是没有问题的,因为界面上的参数是不一样的。
这下放心了
|
|