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); }
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); }