我在一个解决方案[LDM
]中有两个项目[主项目,数据访问项目]。
主项目包含页面,脚本,图像等
数据访问项目仅包含数据库操作。
我需要在数据访问项目中访问HttpRuntime.Cache
。
我该怎么做?
答案 0 :(得分:1)
将HttpRuntime.Cache
传递给您要访问的DAL class
。您可以将它作为参数传递给方法的构造函数。
void SomeMethodInDal(HttpRuntime.Cache httpRuntimeCache)
{
}
最好将所需信息从HttpRuntime.Cache
传递到DAL,而不是传递HttpRuntime.Cache
答案 1 :(得分:0)
您应该想知道为什么要在DAL中使用Asp.Net缓存。实际上,这些层是因为您希望区分用户界面和数据访问以保持代码中的低耦合。如果您只需要对缓存进行DAL访问,请在DAL中定义缓存公共接口:
public interface ICache {
Object GetItem(String key);
void SetItem(String key, Object item);
}
然后,在表示层中,创建一个实现:
public class PlCache : ICache {
public Object GetItem(String key) {
return HttpRuntime.Cache.Get(key);
}
public void SetItem(String key, Object item) {
// TODO: you insert code
}
}
最后,在DAL中,您可以使用:
void DoSomething(ICache cache)
{
}
那,从PL你可以拨打DoSomething(new PlCache())
;
相反,如果您的DAL中只需要任何缓存实施,则可以使用System.Runtime.Caching.MemoryCache。