internal virtual ItemRegistrationBase BasedOn(ItemRegistrationBase other) { this.Key = other.Key; this.Module = other.Module; this.Scope = other.Scope; return(this); }
/// <summary> /// Withes the evaluted paramter. /// </summary> /// <param name="itemRegistration">The builder resolvable item.</param> /// <param name="name">The name.</param> /// <param name="instanceFactory">The instance factory.</param> /// <returns></returns> /// <exception cref="System.ArgumentNullException">name</exception> public static ItemRegistrationBase WithEvalutedParamter( this ItemRegistrationBase itemRegistration, string name, Func <Type, object> instanceFactory) { if (name == null) { throw new ArgumentNullException("name"); } return(itemRegistration.WithParameter(new EvalutedParamter(name, instanceFactory))); }
/// <summary> /// Withes the named parameter. /// </summary> /// <param name="itemRegistration">The builder resolvable item.</param> /// <param name="name">The name.</param> /// <param name="value">The value.</param> /// <returns></returns> /// <exception cref="System.ArgumentNullException">name</exception> public static ItemRegistrationBase WithNamedParameter(this ItemRegistrationBase itemRegistration, string name, object value) { if (name == null) { throw new ArgumentNullException("name"); } return(itemRegistration.WithParameter(new NamedParameter(name, value))); }
/// <summary> /// Registers type as all interfaces that it implements. /// </summary> /// <param name="resolvableItemRegistration">The resolvable item builder.</param> /// <returns>The resolvable item builder.</returns> public static ItemRegistrationBase AsImplementedInterfaces(this ItemRegistrationBase resolvableItemRegistration) { foreach (var inType in resolvableItemRegistration.InTypes) { var interfaces = inType.GetInterfaces(); if (!interfaces.Any()) { resolvableItemRegistration.AsType = null; return(resolvableItemRegistration); } resolvableItemRegistration.AsType = interfaces.First(); foreach (var @interface in interfaces.Skip(1)) { resolvableItemRegistration.Origin.Register(inType).As(@interface); } } return(resolvableItemRegistration); }
public static ItemRegistrationBase Keyed( this ItemRegistrationBase resolvableItemRegistrationBase, object key) { resolvableItemRegistrationBase.Key = key; return(resolvableItemRegistrationBase); }
/// <summary> /// Registers type as generic argument. /// </summary> /// <typeparam name="T">The type, that type should be registered as.</typeparam> /// <param name="resolvableItemRegistrationBase">The resolvable item base.</param> /// <returns>The resolvable item base.</returns> public static ItemRegistrationBase As <T>(this ItemRegistrationBase resolvableItemRegistrationBase) { resolvableItemRegistrationBase.As(typeof(T)); return(resolvableItemRegistrationBase); }
/// <summary> /// Registered instance will have only one instance per container including nested liftime scopes. /// </summary> /// <param name="resolvable">The resolvable builder.</param> /// <returns>The resolvable builder.</returns> public static ItemRegistrationBase SingleInstance(this ItemRegistrationBase resolvable) { return(resolvable.WithScope(new SingleInstanceScope())); }
/// <summary> /// Registered instance will live only within liftimescope. /// </summary> /// <param name="resolvable">The resolvable builder.</param> /// <returns>The resolvable builder.</returns> public static ItemRegistrationBase PerLifetimeScope(this ItemRegistrationBase resolvable) { return(resolvable.WithScope(new PerLifetimeScope())); }
/// <summary> /// Default. Every instance request will produce new instance. /// </summary> /// <param name="resolvable">The resolvable builder.</param> /// <returns>The resolvable builder.</returns> public static ItemRegistrationBase PerDependency(this ItemRegistrationBase resolvable) { return(resolvable.WithScope(new PerDependencyScope())); }
/// <summary> /// Withes the scope. /// </summary> /// <param name="resolvable">The resolvable.</param> /// <param name="scope">The scope.</param> /// <returns></returns> public static ItemRegistrationBase WithScope(this ItemRegistrationBase resolvable, Scope scope) { resolvable.Scope = scope; return(resolvable); }
/// <summary> /// Withes the parameter. /// </summary> /// <param name="itemRegistration">The builder resolvable item.</param> /// <param name="paramter">The paramter.</param> /// <returns></returns> public static ItemRegistrationBase WithParameter(this ItemRegistrationBase itemRegistration, Parameter paramter) { itemRegistration.Parameters.Add(paramter); return(itemRegistration); }