示例#1
0
        public Callstack(Logger logger)
        {
            _logger = logger;
            if (_logger.Logging)
            {
                Type       type       = GetType();
                StackTrace stackTrace = new StackTrace();
                int        i          = 0;
                MethodBase method;
                do
                {
                    StackFrame frame = stackTrace.GetFrame(i);
                    method = frame.GetMethod();
                    if ((method.IsConstructor && method.DeclaringType.IsAssignableFrom(type)) ||
                        ((method.MemberType == MemberTypes.Method) && ((MethodInfo)method).ReturnType.IsAssignableFrom(type)))
                    {
                        method = null;
                    }
                    else
                    {
                        break;
                    }
                    i++;
                }while (i < stackTrace.FrameCount);

                if (method != null)
                {
                    _name = string.Format(CultureInfo.InvariantCulture, "{0}.{1}", method.DeclaringType.Name, method.Name);
                    _logger.WriteLine("{0} entering", _name);
                    _logger.Indent();
                }
            }
        }
示例#2
0
        public Callstack(Logger logger)
        {
            _logger = logger;
            if (_logger.Logging)
            {
                Type type = GetType();
                StackTrace stackTrace = new StackTrace();
                int i = 0;
                MethodBase method;
                do
                {
                    StackFrame frame = stackTrace.GetFrame(i);
                    method = frame.GetMethod();
                    if ((method.IsConstructor && method.DeclaringType.IsAssignableFrom(type)) ||
                        ((method.MemberType == MemberTypes.Method) && ((MethodInfo)method).ReturnType.IsAssignableFrom(type)))
                    {
                        method = null;
                    }
                    else
                    {
                        break;
                    }
                    i++;
                }
                while (i < stackTrace.FrameCount);

                if (method != null)
                {
                    _name = string.Format(CultureInfo.InvariantCulture, "{0}.{1}", method.DeclaringType.Name, method.Name);
                    _logger.WriteLine("{0} entering", _name);
                    _logger.Indent();
                }
            }
        }
示例#3
0
        public Callstack(Logger logger, object token = null)
        {
            _logger = logger;
            if (_logger.Logging)
            {
                _token = token;
                Type       type       = typeof(Callstack);
                StackTrace stackTrace = new StackTrace();
                int        i          = 0;
                MethodBase method;
                do
                {
                    StackFrame frame = stackTrace.GetFrame(i);
                    method = frame.GetMethod();
                    if ((method.IsConstructor && ((method.DeclaringType == type) ||
                                                  method.DeclaringType.IsSubclassOf(type))) ||
                        ((method.MemberType == MemberTypes.Method) && ((MethodInfo)method).ReturnType == type))
                    {
                        method = null;
                    }
                    else
                    {
                        break;
                    }
                    i++;
                }while (i < stackTrace.FrameCount);

                if (method != null)
                {
                    _name = string.Format(CultureInfo.InvariantCulture, "{0}.{1}", method.DeclaringType.Name, method.Name);
                    if (_token != null)
                    {
                        _name += string.Format(CultureInfo.InvariantCulture, "({0})", _token);
                    }
                    _logger.WriteLine("{0} entering", _name);
                    _logger.Indent();
                }
            }
        }