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

  Source.Aspects.InterceptCallInfo.cs

 
using System;
using System.Collections;
using System.Diagnostics;
using System.Security.Principal;
using System.Threading;
using BLToolkit.Properties;

namespace BLToolkit.Aspects
{
    [DebuggerStepThrough] 
    public sealed class InterceptCallInfo
    {
        public InterceptCallInfo()
        {
            _currentPrincipal = Thread.CurrentPrincipal;
            _currentThread    = Thread.CurrentThread;
        }

        private CallMethodInfo _callMethodInfo;
        public  CallMethodInfo  CallMethodInfo
        {
            get { return _callMethodInfo;  }
            set
            {
                if (_callMethodInfo == value)
                {
                    // A race condition.
                    //
                    return;
                }

                if (_callMethodInfo != null)
                    throw new InvalidOperationException(Resources.InterceptCallInfo_CallMethodInfoIsNotMutable);

                _callMethodInfo = value;

                int len = value.MethodInfo.GetParameters().Length;

                _parameterValues = len == 0? _emptyValues: new object[len];
            }
        }

        private readonly object[] _emptyValues = new object[0];

        private object[] _parameterValues;
        public  object[]  ParameterValues
        {
            get { return _parameterValues;  }
            set { _parameterValues = value; }
        }

        private object _returnValue;
        public  object  ReturnValue
        {
            get { return _returnValue;  }
            set { _returnValue = value; }
        }

        private InterceptResult _interceptResult = InterceptResult.Continue;
        public  InterceptResult  InterceptResult
        {
            get { return _interceptResult;  }
            set { _interceptResult = value; }
        }

        private InterceptType _interceptType;
        public  InterceptType  InterceptType
        {
            get { return _interceptType;  }
            set { _interceptType = value; }
        }

        private Exception _exception;
        public  Exception  Exception
        {
            get { return _exception;  }
            set { _exception = value; }
        }

        private Hashtable  _items;
        public  IDictionary Items
        {
            get
            {
                if (_items == null)
                    _items = new Hashtable();

                return _items;
            }
        }

        private readonly DateTime _beginCallTime = DateTime.Now;
        public           DateTime  BeginCallTime
        {
            get { return _beginCallTime; }
        }

        private readonly IPrincipal _currentPrincipal;
        public           IPrincipal  CurrentPrincipal
        {
            get { return _currentPrincipal; }
        }

        private readonly Thread _currentThread;
        public           Thread  CurrentThread
        {
            get { return _currentThread; }
        }

        private bool _cached;
        public  bool  Cached
        {
            get { return _cached;  }
            set { _cached = value; }
        }

        private object _object;
        public  object  Object
        {
            get { return _object;  }
            set { _object = value; }
        }
    }
}
 
© 2010 www.bltoolkit.net
support@bltoolkit.net