/// <summary> /// The with logging. /// </summary> /// <param name="aspectRegistrationBuilder"> /// The aspect registration builder. /// </param> /// <param name="methodsToIntercept"> /// The methods To Intercept. /// </param> /// <returns> /// The <see cref="IAspectRegistrationBuilder"/>. /// </returns> public static IAspectRegistrationBuilder AddLoggingAspect(this IAspectRegistrationBuilder aspectRegistrationBuilder, params MethodInfo[] methodsToIntercept) { if (aspectRegistrationBuilder == null) { throw new ArgumentNullException(nameof(aspectRegistrationBuilder)); } aspectRegistrationBuilder.AddAspect(LoggingAspectFactory.LoggingAspectFactoryType, methodsToIntercept: methodsToIntercept); return(aspectRegistrationBuilder); }
/// <summary> /// The add aspect. /// </summary> /// <param name="aspectRegistrationBuilder"> /// The aspect registration builder. /// </param> /// <param name="sortOrder"> /// The sort order. /// </param> /// <param name="methodsToIntercept"> /// The methods to intercept. /// </param> /// <typeparam name="T"> /// </typeparam> /// <returns> /// The <see cref="IAspectRegistrationBuilder" />. /// </returns> /// <exception cref="ArgumentNullException"> /// </exception> public static IAspectRegistrationBuilder AddAspectViaFactory <T>(this IAspectRegistrationBuilder aspectRegistrationBuilder, int?sortOrder = null, params MethodInfo[] methodsToIntercept) where T : IAspectFactory { if (aspectRegistrationBuilder == null) { throw new ArgumentNullException(nameof(aspectRegistrationBuilder)); } aspectRegistrationBuilder.AddAspect(typeof(T), sortOrder, methodsToIntercept); return(aspectRegistrationBuilder); }
/// <summary> /// The add scoped. /// </summary> /// <param name="aspectRegistrationBuilder"> /// The aspect registration builder. /// </param> /// <typeparam name="TService"> /// </typeparam> /// <typeparam name="TImplementation"> /// </typeparam> /// <returns> /// The <see cref="IAspectRegistrationBuilder" />. /// </returns> /// <exception cref="ArgumentNullException"> /// </exception> public static IAspectRegistrationBuilder AddScoped <TService, TImplementation>( this IAspectRegistrationBuilder aspectRegistrationBuilder) where TImplementation : TService { if (aspectRegistrationBuilder == null) { throw new ArgumentNullException(nameof(aspectRegistrationBuilder)); } aspectRegistrationBuilder.AddService(typeof(TService), typeof(TImplementation), ServiceLifetime.Scoped); return(aspectRegistrationBuilder); }
/// <summary> /// The add scoped. /// </summary> /// <param name="aspectRegistrationBuilder"> /// The aspect registration builder. /// </param> /// <param name="factory"> /// The factory. /// </param> /// <typeparam name="TService"> /// </typeparam> /// <returns> /// The <see cref="IAspectRegistrationBuilder" />. /// </returns> /// <exception cref="ArgumentNullException"> /// </exception> public static IAspectRegistrationBuilder AddScoped <TService>( this IAspectRegistrationBuilder aspectRegistrationBuilder, Func <IServiceProvider, object> factory) { if (aspectRegistrationBuilder == null) { throw new ArgumentNullException(nameof(aspectRegistrationBuilder)); } if (factory == null) { throw new ArgumentNullException(nameof(factory)); } aspectRegistrationBuilder.AddService(typeof(TService), factory, ServiceLifetime.Scoped); return(aspectRegistrationBuilder); }
/// <summary> /// Registers the aspect of Type {type:T} /// </summary> /// <param name="aspectRegistrationBuilder"></param> /// <param name="sortOrder"></param> /// <param name="methodsToIntercept"></param> /// <typeparam name="T"></typeparam> /// <returns></returns> /// <exception cref="ArgumentNullException"></exception> public static IAspectRegistrationBuilder AddAspect <T>(this IAspectRegistrationBuilder aspectRegistrationBuilder, int?sortOrder = null, params MethodInfo[] methodsToIntercept) { var type = typeof(T); if (aspectRegistrationBuilder == null) { throw new ArgumentNullException(nameof(aspectRegistrationBuilder)); } if (type.GetCustomAttribute(typeof(AspectAttribute), true) == null) { throw new ArgumentException( "The given type T must be decorated with the AspectAttribute or inherit from a type decorated with it"); } return(aspectRegistrationBuilder.AddAspect(type, sortOrder, methodsToIntercept)); }