示例#1
0
        private static Type GetLogType(IBuilderContext context)
        {
            Type logType = null;
            IBuildTrackingPolicy buildTrackingPolicy = BuildTracking.GetPolicy(context);

            if ((buildTrackingPolicy != null) && (buildTrackingPolicy.BuildKeys.Count >= 2))
            {
                logType = ((NamedTypeBuildKey)buildTrackingPolicy.BuildKeys.ElementAt(1)).Type;
            }
            else
            {
                StackTrace stackTrace = new StackTrace();
                //first two are in the log creation strategy, can skip over them
                for (int i = 2; i < stackTrace.FrameCount; i++)
                {
                    StackFrame frame = stackTrace.GetFrame(i);
                    logType = frame.GetMethod().DeclaringType;
                    if (!logType.FullName.StartsWith("Microsoft.Practices"))
                    {
                        break;
                    }
                }
            }
            return(logType);
        }
示例#2
0
        private static Type GetLogType(IBuilderContext context)
        {
            Type logType = typeof(T);

            IBuildTrackingPolicy buildTrackingPolicy = BuildTracking.GetPolicy(context);

            if ((buildTrackingPolicy != null) && (buildTrackingPolicy.BuildKeys.Count >= 2))
            {
                logType = ((NamedTypeBuildKey)buildTrackingPolicy.BuildKeys.ElementAt(1)).Type;
            }
            else
            {
                StackTrace stackTrace = new StackTrace();
                //first -two- nine are in the log creation strategy, can skip over them
                for (int i = 3; i < stackTrace.FrameCount; i++)
                {
                    StackFrame frame = stackTrace.GetFrame(i);
                    logType = frame.GetMethod().DeclaringType;
                    //Console.WriteLine(logType.FullName);
                    if (!logType.FullName.StartsWith(typeof(IUnityContainer).Namespace) && !logType.FullName.StartsWith("System"))
                    {
                        break;
                    }
                }
            }

            return(logType);
        }
    public override void PostBuildUp(IBuilderContext context)
    {
        IBuildTrackingPolicy policy = BuildTrackingExtension.GetPolicy(context);

        if ((policy != null) && (policy.BuildKeys.Count > 0))
        {
            policy.BuildKeys.Pop();
        }
    }
        public void PreBuildUp(IBuilderContext context)
        {
            //ValidationHelper.NotNull(context, "context");
            string loggerName = String.Empty;

            if (context.BuildKey.Type.Equals(typeof(ILogger)))
            {
                IBuildTrackingPolicy buildTrackingPolicy = BuildTrackingPolicy.Get(context);

                if (buildTrackingPolicy != null && buildTrackingPolicy.Count >= 2)
                {
                    loggerName = buildTrackingPolicy.ElementAt(1).Type.FullName;
                }
                else
                {
                    loggerName = context.BuildKey.Name;
                }

                Debug.Assert(!String.IsNullOrEmpty(loggerName), "ILogger cannot be resolved with empty logger name. Set logger name to calling type FullName");

                //var loggerCreationPolicy = context.Policies.Get<ILoggerCreationPolicy>(NamedTypeBuildKey.Make<ILogger>());
                //context.Existing = loggerCreationPolicy.Create(loggerName);
            }
        }
        public override void PreBuildUp(IBuilderContext context)
        {
            IBuildTrackingPolicy policy = BuildTracking.GetPolicy(context) ?? BuildTracking.SetPolicy(context);

            policy.BuildKeys.Push(context.BuildKey);
        }