App_Code/Persistable.cs

(开头部分) 4KB

这里只显示每个文件的开头 60 行。登录后可以解锁完整代码。

//===============================================================================================
//
// (c) Copyright Microsoft Corporation.
// This source is subject to the Microsoft Permissive License.
// See http://www.microsoft.com/resources/sharedsource/licensingbasics/sharedsourcelicenses.mspx.
// All other rights reserved.
//
//===============================================================================================
//该源码下载自www.51aspx.com(51aspx.com)

using System;
using System.Web;
using System.IO;
using System.Xml.Serialization;
using System.Web.Caching;

namespace MyWebPagesStarterKit
{
    /// <summary>
    /// Generic class for a perssitable object. Encapsulates the logic to load/save data from/to the filesystem. To speed up the acces, caching is used.
    /// </summary>
    /// <typeparam name="T">class or struct with all the data-fields that must be persisted</typeparam>
    public abstract class Persistable<T>
    {
        private String _path;

        protected T _data;

        /// <summary>
        /// Creates a instance of Persistable. Also creates a instance of T
        /// </summary>
        public Persistable()
        {
            _data = (T)Activator.CreateInstance(typeof(T));
        }

        /// <summary>
        /// Loads the data from the filesystem. For deserialization a XmlSeralizer is used.
        /// </summary>
        protected void LoadData()
        {
            _path = HttpContext.Current.Server.MapPath(GetDataFilename());
            lock (_path)
            {
                //first check, if the object is maybe already in the cache
                object o = HttpContext.Current.Cache[_path];
                if (o != null)
                {
                    _data = (T)o;
                }
                else
                {
                    //if nothing was found in the cache, the data must be loaded from the disk
                    //load and deserialize the data from the filesystem
                    using (FileStream reader = File.Open(_path, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
                    {
                        XmlSerializer serializer = new XmlSerializer(typeof(T));
                        _data = (T)serializer.Deserialize(reader);
                    }
                    HttpContext.Current.Cache.Insert(_path, _data);
后面还有 51 行代码,解锁后查看完整代码

24 小时内免费解锁 3 个项目,之后 1 算力/个。 规则说明

AI 解读 AI

登录后可用,每次 10 算力,解读结果公开显示在下面。

还没有人解读过这个文件。