WEB开发网
开发学院软件开发C语言 AOP的两个应用:实体集更新(DateEntityListUpdate... 阅读

AOP的两个应用:实体集更新(DateEntityListUpdate)、延迟加载(LazyLoad)(上)

 2010-09-30 21:02:56 来源:WEB开发网   
核心提示: 二、延迟加载(LazyLoad)没有仔细研究过其他框架的延迟加载是怎么实现的,自己还是基于.Net的消息机制做了这个功能,AOP的两个应用:实体集更新(DateEntityListUpdate)、延迟加载(LazyLoad)(上)(4),LazyLoadableAttribute类//***//

二、延迟加载(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;
        }
    }
}

上一页  1 2 3 4 5  下一页

Tags:AOP 两个 应用

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接