您的位置:首页 >> 编程开发 >> .NET >> 其它 >> 正文
其它 RSS
 

用System.Web.Caching.Cache保存数据类的缓存

http://www.rdxx.com 05年04月30日 12:12 Blog 我要投稿

标签: 保存数据 , 缓存 , Cache , , Web , CA , 数据 , 保存
 

/// The DataProvider class contains a single method, Instance(), which returns an instance of the
 /// user-specified data provider class.
 ///
 public class DataProvider
 {
  public static IDataProvider Instance()
  {
   //use the cache because the reflection used later is expensive
   Cache cache = System.Web.HttpContext.Current.Cache;

   if ( cache["IDataProvider"] == null )
   {
    //get the assembly path and class name from web.config
    String prefix = "";
    NameValueCollection context =

(NameValueCollection)ConfigurationSettings.GetConfig("appSettings");
    if (context == null)
    {
     //can not get settings
     return null;
    }

    String assemblyPath = context[prefix +

"DataProviderAssemblyPath"];
    String className = context[prefix +

"DataProviderClassName"];

    // assemblyPath presented in virtual form, must convert to

physical path
    assemblyPath =

HttpContext.Current.Server.MapPath(HttpContext.Current.Request.ApplicationPath + "/bin/" +

assemblyPath);     

    // Uuse reflection to store the constructor of the class

that implements IWebForumDataProvider
    try
    {
     cache.Insert( "IDataProvider", Assembly.LoadFrom(

assemblyPath).GetType( className ).GetConstructor(new Type[0]), new CacheDependency(

assemblyPath ) );
    }
    catch (Exception)
    {

     // could not locate DLL file
     HttpContext.Current.Response.Write("<b>ERROR:</b>

Could not locate file: <code>" + assemblyPath + "</code> or could not locate class <code>" +

className + "</code> in file.");
     HttpContext.Current.Response.End();
    }
   }
   return (IDataProvider)( 

((ConstructorInfo)cache["IDataProvider"]).Invoke(null) );
  }
 }


 
 
打印本文
 
 
  热点搜索
 
 
 



Valid XHTML 1.0 Transitional
Copyright ©2005 - 2008 Rdxx.Com,All Rights Reserved
收藏本页
收藏本站