/// <summary>
        /// Initializes a new instance of the TypeImplementer class.
        /// </summary>
        /// <param name="interfaceType">The type to implement.</param>
        public TypeImplementer(Type interfaceType)
        {
            _interfaceType = interfaceType;
            _contextProvider = ProviderManager.GetProvider<TraceContextProvider>(interfaceType, typeof(TraceContextProviderAttribute), null);
            _serializationProvider = TraceSerializationProvider.GetSerializationProvider(interfaceType);
            _eventAttributeProvider = ProviderManager.GetProvider<EventAttributeProvider>(interfaceType, typeof(EventAttributeProviderAttribute), () => new EventAttributeProvider());

            // only interfaces support context
            if (_contextProvider != null && !_interfaceType.IsInterface)
                throw new InvalidOperationException("Context Providers can only be added to interface-based logs.");

            ImplementType();
        }
Example #2
0
 public static void RegisterProvider <TLog>(TraceContextProvider provider)
 {
     RegisterProvider(typeof(TLog), typeof(TraceContextProvider), provider);
 }
Example #3
0
 /// <summary>
 /// Registers a Context Provider for a given event source.
 /// </summary>
 /// <param name="type">The type of event source to register with.</param>
 /// <param name="provider">The provider to register.</param>
 public static void RegisterProvider(Type type, TraceContextProvider provider)
 {
     RegisterProvider(type, typeof(TraceContextProvider), provider);
 }
Example #4
0
 /// <summary>
 /// Registers a default TraceContextProvider for all event sources.
 /// </summary>
 /// <param name="provider">The provider to register.</param>
 public static void RegisterDefaultProvider(TraceContextProvider provider)
 {
     RegisterProvider(null, provider);
 }