在我的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中检索数据。
原件数据由另一个程序更新。