/// <summary>
 /// Initializes a counter publisher.
 /// </summary>
 /// <param name="counterSamplePublisher">The counter publisher.</param>
 /// <param name="counterSet">An object providing counter instance members.</param>
 /// <param name="memberList">The member list.</param>
 /// <param name="counterSetName">Name of the counter set.</param>
 private static void InitializeCounterPublisher(CounterSamplePublisher counterSamplePublisher, object counterSet, IEnumerable<MemberInfo> memberList, string counterSetName)
 {
     foreach (var member in memberList)
     {
         PublishCounterAttribute attribute = GetCounterAttribute(member);
         if (attribute != null)
         {
             if (!IsCounterType(member))
             {
                 if (log.IsWarnEnabled)
                 {
                     log.WarnFormat("PublishCounterAttribute applied to member '{0}' which is not a ICounter type.", member.Name);
                 }
             }
             else
             {
                 ICounter counter = (ICounter)GetMemberValue(counterSet, member);
                 if (counter == null)
                 {
                     if (log.IsWarnEnabled)
                     {
                         log.WarnFormat("Counter for member {0} has not been initialized.", member.Name);
                     }
                 }
                 else if (counter.CounterType != CounterType.Undefined)
                 {
                     string name = GetCounterName(member, attribute, counterSetName);
                     counterSamplePublisher.AddCounter(counter, name);
                     if (log.IsDebugEnabled)
                     {
                         log.DebugFormat("Added counter '{0}' to counter publisher.", name);
                     }
                 }
             }
         }
         else
         {
             CounterSetAttribute attribute2 = GetCounterSetAttribute(member);
             if (attribute2 != null)
             {
                 if (GetMemberValue(counterSet, member) == null)
                 {
                     if (log.IsWarnEnabled)
                     {
                         log.WarnFormat("CounterSet for member {0} has not been initialized.", member.Name);
                     }
                 }
                 else
                 {
                     InitializeCounterPublisher(counterSamplePublisher, counterSet, GetCounterSetName(member, attribute2, counterSetName));
                 }
             }
         }
     }
 }
 /// <summary>
 ///   Initializes a counter publisher.
 /// </summary>
 /// <param name="counterSamplePublisher">The counter publisher.</param>
 /// <param name="counterContainerType">Type of the counter container.</param>
 /// <param name="counterSetName">Name of the counter set.</param>
 public static void InitializeCounterPublisher(CounterSamplePublisher counterSamplePublisher, Type counterContainerType, string counterSetName)
 {
     MemberInfo[] infoArray = counterContainerType.GetMembers(BindingFlags.GetProperty | BindingFlags.GetField | BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Static);
     InitializeCounterPublisher(counterSamplePublisher, null, infoArray, counterSetName);
 }
 /// <summary>
 ///   Initializes a counter publisher.
 /// </summary>
 /// <param name="counterSamplePublisher">The counter publisher.</param>
 /// <param name="counterSet">An object providing counter instance members.</param>
 /// <param name="counterSetName">The name of the counter set.</param>
 public static void InitializeCounterPublisher(CounterSamplePublisher counterSamplePublisher, object counterSet, string counterSetName)
 {
     Type type = counterSet.GetType();
     MemberInfo[] infoArray = type.GetMembers(BindingFlags.GetProperty | BindingFlags.GetField | BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Instance);
     InitializeCounterPublisher(counterSamplePublisher, counterSet, infoArray, counterSetName);
 }
 /// <summary>
 /// Initializes a counter publisher.
 /// </summary>
 /// <param name="counterSamplePublisher">The counter publisher.</param>
 /// <param name="counterContainer">An object providing counter instance members.</param>
 public static void InitializeCounterPublisher(CounterSamplePublisher counterSamplePublisher, object counterContainer)
 {
     InitializeCounterPublisher(counterSamplePublisher, counterContainer, string.Empty);
 }