Business Logic Toolkit for .NET
www.bltoolkit.net
|  Home   |  Download   |  Documentation   |  Discussions   |  License   |

  Source.Aspects.CallMethodInfo.cs

 
using System;
using System.Collections;
using System.Reflection;

namespace BLToolkit.Aspects
{
    [System.Diagnostics.DebuggerStepThrough]
    public class CallMethodInfo
    {
        #region Init

        readonly object _sync = new object();

        #endregion

        #region Public Members

        public CallMethodInfo(MethodInfo methodInfo)
        {
            _methodInfo = methodInfo;
            _parameters = methodInfo.GetParameters();
        }

        private readonly MethodInfo _methodInfo;
        public           MethodInfo  MethodInfo
        {
            get { return _methodInfo; }
        }

        private readonly ParameterInfo[] _parameters;
        public           ParameterInfo[]  Parameters
        {
            get { return _parameters; }
        }

        private Hashtable  _items;
        public  IDictionary Items
        {
            get
            {
                if (_items == null) lock (_sync) if (_items == null)
                    _items = Hashtable.Synchronized(new Hashtable());

                return _items;
            }
        }

        private CacheAspect _cacheAspect;
        public  CacheAspect  CacheAspect
        {
                     get { return _cacheAspect;  }
            internal set { _cacheAspect = value; }
        }

        [Obsolete("Use CacheAspect.Cache instead")]
        public  IDictionary  MethodCallCache
        {
            get { return _cacheAspect != null? _cacheAspect.Cache: new Hashtable(); }
        }

        #endregion

        #region Proptected Members

        private  bool[] _cacheableParameters;
        internal bool[]  CacheableParameters
        {
            get { return _cacheableParameters;  }
            set { _cacheableParameters = value; }
        }

        #endregion
    }
}
 
© 2010 www.bltoolkit.net
support@bltoolkit.net