Beispiel #1
0
        public object Around(
            [Advice.Argument(Advice.Argument.Source.Arguments)] object[] args,
            //[Advice.Argument(Advice.Argument.Source.Attributes)] Attribute[] attrs,
            [Advice.Argument(Advice.Argument.Source.Instance)] object _this,
            [Advice.Argument(Advice.Argument.Source.Method)] MethodBase method,
            [Advice.Argument(Advice.Argument.Source.Name)] string name,
            [Advice.Argument(Advice.Argument.Source.ReturnType)] Type retType,
            [Advice.Argument(Advice.Argument.Source.ReturnValue)] object retVal,
            [Advice.Argument(Advice.Argument.Source.Target)] Func <object[], object> target,
            [Advice.Argument(Advice.Argument.Source.Type)] Type hostType
            )
        {
            base.LogArguments(args, AroundEnter);
            base.LogAttributes(args, AroundEnter);
            base.LogInstance(_this, AroundEnter);
            base.LogMethod(method, AroundEnter);
            base.LogName(name, AroundEnter);
            base.LogReturnType(retType, AroundEnter);
            base.LogReturnValue(retVal, AroundEnter);
            base.LogTarget(target, AroundEnter);
            base.LogType(hostType, AroundEnter);

            TestLog.Write(AroundEnter);
            var result = target(args);

            TestLog.Write(AroundExit);
            return(result);
        }
Beispiel #2
0
 internal void LogReturnValue(object retVal, string prefix)
 {
     if (retVal == null)
     {
         TestLog.Write($"{prefix}:ReturnValue:null");
     }
     else
     {
         TestLog.Write($"{prefix}:ReturnValue:{retVal.GetType().FullName}:{retVal.ToString()}");
     }
 }
Beispiel #3
0
 internal void LogReturnType(Type retType, string prefix)
 {
     if (retType == null)
     {
         TestLog.Write($"{prefix}:ReturnType:null");
     }
     else
     {
         TestLog.Write($"{prefix}:ReturnType:{retType.FullName}");
     }
 }
Beispiel #4
0
 internal void LogName(string name, string prefix)
 {
     if (name == null)
     {
         TestLog.Write($"{prefix}:Name:null");
     }
     else
     {
         TestLog.Write($"{prefix}:Name:{name}");
     }
 }
Beispiel #5
0
 internal void LogInstance(object _this, string prefix)
 {
     if (_this == null)
     {
         TestLog.Write($"{prefix}:Instance:null");
     }
     else
     {
         TestLog.Write($"{prefix}:Instance:{_this.GetType().FullName}:{_this.ToString()}");
     }
 }
Beispiel #6
0
 internal void LogMethod(MethodBase method, string prefix)
 {
     if (method == null)
     {
         TestLog.Write($"{prefix}:Method:null");
     }
     else
     {
         TestLog.Write($"{prefix}:Method:{method.DeclaringType.FullName}+{method.Name}");
     }
 }
Beispiel #7
0
 internal void LogType(Type hostType, string prefix)
 {
     if (hostType == null)
     {
         TestLog.Write($"{prefix}:Type:null");
     }
     else
     {
         TestLog.Write($"{prefix}:Type:{hostType.GetType().FullName}:{hostType.ToString()}");
     }
 }
Beispiel #8
0
 internal void LogArguments(object[] args, string prefix)
 {
     if (args == null)
     {
         return;
     }
     else
     {
         foreach (var arg in args)
         {
             if (arg == null)
             {
                 TestLog.Write($"{prefix}:Arguments:null");
             }
             else
             {
                 TestLog.Write($"{prefix}:Arguments:{arg.GetType().Name}:{arg.ToString()}");
             }
         }
     }
 }
Beispiel #9
0
        public void Before(
            [Advice.Argument(Advice.Argument.Source.Arguments)] object[] args,
            //[Advice.Argument(Advice.Argument.Source.Attributes)] Attribute[] attrs,
            [Advice.Argument(Advice.Argument.Source.Instance)] object _this,
            [Advice.Argument(Advice.Argument.Source.Method)] MethodBase method,
            [Advice.Argument(Advice.Argument.Source.Name)] string name,
            [Advice.Argument(Advice.Argument.Source.ReturnType)] Type retType,
            [Advice.Argument(Advice.Argument.Source.ReturnValue)] object retVal,
            [Advice.Argument(Advice.Argument.Source.Target)] Func <object[], object> target,
            [Advice.Argument(Advice.Argument.Source.Type)] Type hostType
            )
        {
            base.LogArguments(args, BeforeExecuted);
            //base.LogAttributes(args, BeforeExecuted);
            base.LogInstance(_this, BeforeExecuted);
            base.LogMethod(method, BeforeExecuted);
            base.LogName(name, BeforeExecuted);
            base.LogReturnType(retType, BeforeExecuted);
            base.LogReturnValue(retVal, BeforeExecuted);
            base.LogTarget(target, BeforeExecuted);
            base.LogType(hostType, BeforeExecuted);

            TestLog.Write(BeforeExecuted);
        }