Beispiel #1
0
        /// <summary>
        /// Raises the <see cref=E:Entry/> event.
        /// </summary>
        /// <param name="eventArgs">The <see cref="PostSharp.Laos.MethodExecutionEventArgs"/> instance containing the event data.</param>
        public override void OnEntry(MethodExecutionEventArgs eventArgs)
        {
            now = DateTime.Now;

            //            Console.WriteLine(String.Format("\t\t\tEntered in method {2}/{0} at {1} ", eventArgs.Method.Name, now, eventArgs.Instance != null ? eventArgs.Instance.GetType().Name : ""));

            RoLog.Instance.LastMessage = OnExceptionMessage;
            if (RoConfig.Instance.DebugLevel >= debugLevel || debugOnConsole)
            {
                string logMessage = prefixes[debugLevel];

                logMessage += String.Format("<{0}/{1}/",
                                            eventArgs.Instance != null ? eventArgs.Instance.GetType().Name : "Static",
                                            eventArgs.Method);
                if (eventArgs.GetArguments() != null)
                {
                    foreach (object o in eventArgs.GetArguments())
                    {
                        logMessage += (o == null ? "NULL|" : o + "|");
                    }
                }
                else
                {
                    logMessage += "none";
                }
                logMessage += ">";

                RoLog.Instance.Add(logMessage);
                if (debugOnConsole) Console.WriteLine(logMessage);
                RoLog.Instance.WriteToLog(logMessage, debugLevel);
                //                VRLog.Instance.WriteToLog(logMessage);
            }
        }
Beispiel #2
0
 public override void OnEntry(MethodExecutionEventArgs eventArgs)
 {
     if (eventArgs.GetArguments()[position] == null)
     {
         throw new ArgumentNullException(name);
     }
 }
Beispiel #3
0
        /// <summary>
        /// Raises the <see cref=E:Entry/> event.
        /// </summary>
        /// <param name="eventArgs">The <see cref="PostSharp.Laos.MethodExecutionEventArgs"/> instance containing the event data.</param>
        public override void OnEntry(MethodExecutionEventArgs eventArgs)
        {
            now = DateTime.Now;

            //            Console.WriteLine(String.Format("\t\t\tEntered in method {2}/{0} at {1} ", eventArgs.Method.Name, now, eventArgs.Instance != null ? eventArgs.Instance.GetType().Name : ""));

            RoLog.Instance.LastMessage = OnExceptionMessage;
            if (RoConfig.Instance.DebugLevel >= debugLevel || debugOnConsole)
            {
                string logMessage = prefixes[debugLevel];

                logMessage += String.Format("<{0}/{1}/",
                                            eventArgs.Instance != null ? eventArgs.Instance.GetType().Name : "Static",
                                            eventArgs.Method);
                if (eventArgs.GetArguments() != null)
                {
                    foreach (object o in eventArgs.GetArguments())
                    {
                        logMessage += (o == null ? "NULL|" : o + "|");
                    }
                }
                else
                {
                    logMessage += "none";
                }
                logMessage += ">";

                RoLog.Instance.Add(logMessage);
                if (debugOnConsole)
                {
                    Console.WriteLine(logMessage);
                }
                RoLog.Instance.WriteToLog(logMessage, debugLevel);
                //                VRLog.Instance.WriteToLog(logMessage);
            }
        }
        /// <summary>
        /// Methode wird nach erfolgreiche Abarbeiten der Methodenlogik an der ein Kontrakt definiert wurde aufgerufen.
        /// </summary>
        /// <param name="eventArgs">FieldAccessEventArgs für die Methode die aufgerufen wurde.</param>
        public override void OnSuccess(MethodExecutionEventArgs eventArgs)
        {
            if (mContractModel.DbcCheckTime == CheckTime.OnlyRequire)
                return;

            // Kontraktprüfung
            mContractModel.ContractObject.CheckContract(
                mContractModel.EnsureContract.ContractKey,
                eventArgs.GetArguments(),
                eventArgs.Instance,
                eventArgs.ReturnValue,
                mContractModel.GenericClassTypes,
                mOldValues);

            base.OnSuccess(eventArgs);
        }
        /// <summary>
        /// Methode wird bei Aufruf einer Methode aufgerufen an der ein Kontrakt definiert wurde.
        /// </summary>
        /// <param name="eventArgs">FieldAccessEventArgs für die Methode die aufgerufen wurde.</param>
        public override void OnEntry(MethodExecutionEventArgs eventArgs)
        {
            // Bug
            // Hacking Code bitte entfernen
            Initialize(eventArgs.Method.DeclaringType.Assembly);

            // Die Typen die zur Designzeit als generisch geladen wurden müssen
            // zur Laufzeit als konkrete Typen definiert werden. Diese konktreten
            // Typen laden. Es müssen die Typen immer geladen werden, da es sonst
            // bei verschiedene instanzierungen um verschiedene Typen handeln kann.
            if ((!mContractModel.GenericTypesLoaded)
                && (!eventArgs.Instance.GetType().IsGenericType))
                mContractModel.GenericTypesLoaded = true;
            if (!mContractModel.GenericTypesLoaded)
                mContractModel.GenericClassTypes = eventArgs.Instance.GetType().GetGenericArguments();

            // Wenn das IContract Objekt noch nicht geladen wurde bitte laden
            if (mContractModel.ContractObject == null)
                mContractModel.ContractObject = ContractController.Instance.GetContractObject(mContractModel.ContractClassName);

            // als alt definierten Werte laden um sie beim Austritt vergleichen zu können.
            if (mContractModel.EnsureContract.OldValueExist)
                mOldValues = mContractModel.ContractObject.GetOldValues(mContractModel.EnsureContract.GetOldValueKey, eventArgs.GetArguments(), eventArgs.Instance, mContractModel.GenericClassTypes);

            if (mContractModel.DbcCheckTime == CheckTime.OnlyEnsure)
                return;

            // Kontraktprüfung
            mContractModel.ContractObject.CheckContract(
                mContractModel.RequireContract.ContractKey,
                eventArgs.GetArguments(),
                eventArgs.Instance,
                eventArgs.ReturnValue,
                mContractModel.GenericClassTypes,
                null);

            base.OnEntry(eventArgs);
        }