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 算力,解读结果公开显示在下面。
还没有人解读过这个文件。
