AOP的两个应用:实体集更新(DateEntityListUpdate)、延迟加载(LazyLoad)(上)
2010-09-30 21:02:56 来源:WEB开发网二、延迟加载(LazyLoad)
没有仔细研究过其他框架的延迟加载是怎么实现的,自己还是基于.Net的消息机制做了这个功能。
LazyLoadableAttribute类
//*******************************************************************
// 模块:延迟加载的属性
// 日期:2009-9-19 14:23:22
// 作者:Faib
// 版权:Copyright Faib Studio 2009
// 官网:http://www.faib.net.cn
// 邮箱:faib920@126.com
// 备注:
//*******************************************************************
using System;
using System.Runtime.Remoting.Contexts;
using System.Runtime.Remoting.Activation;
using FaibClass.Data.Aspect;
namespace FaibClass.Data
{
/// <summary>
/// 指示该实体中的子实体集、引用实体、引用属性可延迟载入。
/// </summary>
[AttributeUsage(AttributeTargets.Class, AllowMultiple = false)]
public class LazyLoadableAttribute : Attribute, IContextAttribute, IContextProperty
{
internal static string propertyName = "LazyLoadable";
/// <summary>
/// 构造属性。
/// </summary>
public LazyLoadableAttribute()
{
}
string IContextProperty.Name
{
get { return propertyName; }
}
void IContextProperty.Freeze(Context newContext)
{
}
bool IContextProperty.IsNewContextOK(Context newCtx)
{
return true;
}
void IContextAttribute.GetPropertiesForNewContext(IConstructionCallMessage ctorMsg)
{
IContextProperty interceptProperty = new LazyLoadableProperty();
ctorMsg.ContextProperties.Add(interceptProperty);
}
bool IContextAttribute.IsContextOK(Context ctx, IConstructionCallMessage ctorMsg)
{
if (ctx.GetProperty(propertyName) == null)
{
return false;
}
return true;
}
}
}
- ››应用云平台的可用性——从新浪SAE看云平台设计
- ››应用程序的配置管理Poco
- ››AOP的两个应用:实体集更新(DateEntityListUpdate...
- ››AOP的两个应用:实体集更新(DateEntityListUpdate...
- ››应用WebSphere MQ V6 来构建企业信息总线的行业示...
- ››应用 Python 解决一些实际问题
- ››应用JScript和XML自定义无刷新多级联动菜单
- ››应用:C/C++获取本机IP地址
- ››应用程序开发者偏好苹果也关注Android
- ››AOP 的利器:ASM 3.0 介绍
- ››应用软件视频会议中的几个常见问题
- ››应用 RSA 实现 EMF 的开发
更多精彩
赞助商链接