返回首页

大家好,

我开发MVC3应用;

我需要一系列的变量,其中包含必要的信息被访问几乎所有的我的应用程序的一部分,对于特定的用户(用户操作)。

我想出了解决创造必要的静态类,指特定的会话变量的属性,以便一旦被设定,它们会(theorically)保持不变,直到更改/删除,例如:

public static class TestClass

    {

 

        public static string TestProperty {

            get{

                return HttpContext.Current.Session["MyApplication_TestProperty"].ToString();

            }

            set{

                HttpContext.Current.Session["MyApplication_TestProperty"] = value;

            }

        }

 

    }

(或至少是体面)这是一个很好的解决方案,或者是它更好地直接发布在耻辱堂,另谋出路?

任何建议或更好的解决办法吗?

谢谢你在前进,
阿尔贝托

回答

评论会员:SAKryukov 时间:2012/02/07
有想法没有错,但有一个错误的样本(见下面的修补程序)。另一个问题是使用立即数,重复两次。如何你要支持它吗?所有的常量应该是明确的,除了一些琐碎的如0,1,或null。但它可以像这样固定:

{C}
它会工作,但不灵活。更普遍的和一般的方法是使用Singleton模式,请参阅:

{A1}

这是一个用C#实现样品的好文章。我建议你​​学习如何使用模式:
{A2}]

祝你好运。
mdash;水杨酸
评论会员:游客 时间:2012/02/07
alexis.coles:如果它的工作原理,你所需要的,那么为什么不。要牢记的一件事是,HttpContext.Current.Session只会给你的连线由MVC中出现的主线程。即。如果产卵另一个线程做一些工作,这些属性将不会提供给你。使用这样的静态类也意味着你将无法轻松地单元测试任何通话取决于这些属性之一。但如果你不打算使用额外的线程,使调用这些属性,你不想写单元测试,为什么不