예제 #1
0
 protected override void apply(Type pluginType, IConfiguredInstance instance)
 {
     if (instance.PluggedType == typeof (SpecialGuy))
     {
         instance.Dependencies.Add(typeof(IRepository), new SmartInstance<SpecialRepository>());
     }
 }
예제 #2
0
 protected override void apply(Type pluginType, IConfiguredInstance instance)
 {
     instance.Constructor
         .GetParameters()
         .Where(param => param.ParameterType == typeof(Logger))
         .Each(param => instance.Dependencies.Add(LoggerFactory.LoggerFor(instance.PluggedType)));
 }
예제 #3
0
 protected override void apply(Type pluginType, IConfiguredInstance instance)
 {
     if (instance.Constructor == null)
     {
         instance.Constructor = Select(instance.PluggedType, instance.Dependencies);
     }
 }
예제 #4
0
 protected override void apply(Type pluginType, IConfiguredInstance instance)
 {
     var parameter = instance.Constructor.GetParameters().FirstOrDefault(x => x.Name == "connectionString");
     if (parameter != null)
     {
         var connectionString = findConnectionStringFromConfiguration();
         instance.Dependencies.AddForConstructorParameter(parameter, connectionString);
     }
 }
예제 #5
0
            public override void Alter(IConfiguredInstance instance, ParameterInfo parameter)
            {
                var value = System.Configuration.ConfigurationManager.AppSettings[_key];

                instance.Dependencies.AddForConstructorParameter(parameter, value);
            }
예제 #6
0
            public override void Alter(IConfiguredInstance instance, PropertyInfo property)
            {
                var value = System.Configuration.ConfigurationManager.AppSettings[_key];

                instance.Dependencies.AddForProperty(property, value);
            }
예제 #7
0
 public override void Alter(IConfiguredInstance instance)
 {
     instance.SetLifecycleTo<UniquePerRequestLifecycle>();
 }
예제 #8
0
 /// <summary>
 /// Gets an enumerable of all the public, settable properties that could be used
 /// for setter injection by StructureMap
 /// </summary>
 /// <param name="instance"></param>
 /// <returns></returns>
 public static IEnumerable <PropertyInfo> SettableProperties(this IConfiguredInstance instance)
 {
     return(instance.PluggedType.GetProperties(BindingFlags.Public | BindingFlags.Instance)
            .Where(x => x.CanWrite && x.GetSetMethod(false) != null && x.GetSetMethod().GetParameters().Length == 1));
 }
 public override void Alter(IConfiguredInstance instance)
 {
     instance.AddInterceptor(new ActivatorInterceptor<ClassWithInstanceAttributes>(x => x.TurnOn()));
 }
예제 #10
0
 public abstract void Alter(IConfiguredInstance instance);
예제 #11
0
 public override void Alter(IConfiguredInstance instance)
 {
     instance.AddInterceptor(new ActivatorInterceptor <ClassWithInstanceAttributes>(x => x.TurnOn()));
 }
예제 #12
0
 /// <summary>
 /// Apply configuration customization for a single constructor parameter
 /// </summary>
 /// <param name="instance"></param>
 /// <param name="parameter"></param>
 public virtual void Alter(IConfiguredInstance instance, ParameterInfo parameter)
 {
 }
예제 #13
0
 /// <summary>
 /// This method is called against any Instance that implements the
 /// IConfiguredInstance interface
 /// </summary>
 /// <param name="pluginType"></param>
 /// <param name="instance"></param>
 protected abstract void apply(Type pluginType, IConfiguredInstance instance);
 public InstanceMementoPropertyReader(IConfiguredInstance instance, InstanceMemento memento)
 {
     _instance = instance;
     _memento = memento;
 }
 public InstanceMementoPropertyReader(IConfiguredInstance instance, InstanceMemento memento, IPluginFactory pluginFactory)
 {
     _instance = instance;
     _memento = memento;
     _pluginFactory = pluginFactory;
 }
예제 #16
0
 public override void Alter(IConfiguredInstance instance)
 {
     instance.Name = _name;
 }
예제 #17
0
 /// <summary>
 /// Make configuration alterations to a single IConfiguredInstance object
 /// </summary>
 /// <param name="instance"></param>
 public virtual void Alter(IConfiguredInstance instance)
 {
 }
예제 #18
0
 protected override void apply(Type pluginType, IConfiguredInstance instance)
 {
     instance.Constructor.GetParameters()
         .Where(x => x.ParameterType == typeof(IDatabase))
         .Each(param =>
         {
             // Using ReferencedInstance here tells StructureMap
             // to "use the IDatabase by this name"
             var db = new ReferencedInstance(param.Name);
             instance.Dependencies.AddForConstructorParameter(param, db);
         });
 }
예제 #19
0
 /// <summary>
 /// Apply configuration customization to a single setter property
 /// </summary>
 /// <param name="instance"></param>
 /// <param name="property"></param>
 public virtual void Alter(IConfiguredInstance instance, PropertyInfo property)
 {
 }
예제 #20
0
        /// <summary>
        /// Set the lifecycle of this instance to "singleton"
        /// </summary>
        /// <param name="instance"></param>
        /// <returns></returns>
        public static IConfiguredInstance Singleton(this IConfiguredInstance instance)
        {
            instance.SetLifecycleTo <SingletonLifecycle>();

            return(instance);
        }
 public override void Alter(IConfiguredInstance instance)
 {
     instance.Name = ConcreteKey;
 }
예제 #22
0
       public override void Alter(IConfiguredInstance instance)
       {
 
       }
예제 #23
0
 // This method will affect single registrations
 public override void Alter(IConfiguredInstance instance)
 {
     instance.SetLifecycleTo<SingletonLifecycle>();
 }
예제 #24
0
 public object CreateInstance(string typeName, IConfiguredInstance instance)
 {
     throw new NotImplementedException();
 }
 public override void Alter(IConfiguredInstance instance)
 {
     instance.Name = _name;
 }
예제 #26
0
 public object CreateInstance(Type pluginType, IConfiguredInstance instance)
 {
     throw new NotImplementedException();
 }
예제 #27
0
 public DecoratorInterceptor(Type pluginType, IConfiguredInstance instance)
 {
     _pluginType = pluginType;
     _instance = instance;
 }
예제 #28
0
 /// <summary>
 /// Set the lifecycle of this instance to the default "transient" lifecycle
 /// </summary>
 /// <param name="instance"></param>
 /// <returns></returns>
 public static IConfiguredInstance DefaultLifecycle(this IConfiguredInstance instance)
 {
     instance.SetLifecycleTo <TransientLifecycle>();
     return(instance);
 }