有没有办法使一组静态属性无效?

时间:2013-04-03 08:34:03

标签: c# static static-members

在我的mvc网站上,我曾经使用静态变量来存储请求之间的共享变量,有没有办法在不重新启动我的应用程序的情况下“使一组静态变量无效”,或者在其getter中对它们进行归零。

public static object IdsFromSomethingLocker = new object();
        public static int[] IdsFromSomething
        {
            get
            {
                if (_idsFromSomething == null)
                {
                    lock (IdsFromSomethingLocker)
                    {
                        if (_idsFromSomething == null)
                        {                            
                           _idsFromSomething = // some long loading treatment
                        }
                    }
                }
                return _idsFromSomething;
            }
        }

解决方案可能是添加断言以了解何时使此变量无效,如:

 public static object IdsFromSomethingLocker = new object();
            public static int[] IdsFromSomething
            {
                get
                {
                    if (_idsFromSomething == null || needToBeInvalidate)
                    {
                        lock (IdsFromSomethingLocker)
                        {
                            if (_idsFromSomething == null)
                            {                            
                               _idsFromSomething = // some long loading treatment
                            }
                        }
                    }
                    return _idsFromSomething;
                }
            }

但我不想为每个类似的处理添加布尔值。

有没有办法在我的“缓存”属性上添加自定义属性,以了解何时需要使其无效?

编辑:例如,长处理可能是“加载一个xml文件并解析它”但是当我的文件被修改时我想要使我的静态属性无效,我不想使用HttpCache (因为我想要一个可以在另一个上下文中使用的解决方案(winForm)。而xml case可以是另一个数据源在我的情况下,我从RavenDB中检索数据。

原件数据由另一个程序更新。

0 个答案:

没有答案