From: <jer...@us...> - 2008-04-06 19:52:40
|
Revision: 74 http://structuremap.svn.sourceforge.net/structuremap/?rev=74&view=rev Author: jeremydmiller Date: 2008-04-06 12:52:39 -0700 (Sun, 06 Apr 2008) Log Message: ----------- changing out the construction pipeline Modified Paths: -------------- trunk/Source/StructureMap/Configuration/Mementos/ExplicitArgumentMemento.cs trunk/Source/StructureMap/Emitting/Parameters/ChildArrayParameterEmitter.cs trunk/Source/StructureMap/Emitting/Parameters/ChildParameterEmitter.cs trunk/Source/StructureMap/Emitting/Parameters/ParameterEmitter.cs trunk/Source/StructureMap/InstanceFactory.cs trunk/Source/StructureMap/InstanceManager.cs trunk/Source/StructureMap/InstanceMemento.cs trunk/Source/StructureMap/Pipeline/ConfiguredInstance.cs trunk/Source/StructureMap/Pipeline/Instance.cs trunk/Source/StructureMap.Testing.Widget/Decision.cs trunk/Source/StructureMap.Testing.Widget/Hierarchy.cs Modified: trunk/Source/StructureMap/Configuration/Mementos/ExplicitArgumentMemento.cs =================================================================== --- trunk/Source/StructureMap/Configuration/Mementos/ExplicitArgumentMemento.cs 2008-04-06 19:13:08 UTC (rev 73) +++ trunk/Source/StructureMap/Configuration/Mementos/ExplicitArgumentMemento.cs 2008-04-06 19:52:39 UTC (rev 74) @@ -54,10 +54,10 @@ return _inner.GetChildMemento(Key); } - public override object GetChild(string key, string typeName, InstanceManager manager) + public override object GetChild(string key, string typeName, Pipeline.IInstanceCreator instanceCreator) { Type type = Type.GetType(typeName, true); - return _args.Get(type) ?? base.GetChild(key, typeName, manager); + return _args.Get(type) ?? base.GetChild(key, typeName, instanceCreator); } public override InstanceMemento[] GetChildrenArray(string Key) Modified: trunk/Source/StructureMap/Emitting/Parameters/ChildArrayParameterEmitter.cs =================================================================== --- trunk/Source/StructureMap/Emitting/Parameters/ChildArrayParameterEmitter.cs 2008-04-06 19:13:08 UTC (rev 73) +++ trunk/Source/StructureMap/Emitting/Parameters/ChildArrayParameterEmitter.cs 2008-04-06 19:52:39 UTC (rev 74) @@ -33,15 +33,14 @@ private void putChildArrayFromInstanceMementoOntoStack(ILGenerator ilgen, Type argumentType, string argumentName) { - ilgen.Emit(OpCodes.Ldarg_0); - callGetInstanceManager(ilgen); + ilgen.Emit(OpCodes.Ldarg_2); ilgen.Emit(OpCodes.Ldstr, argumentType.GetElementType().AssemblyQualifiedName); ilgen.Emit(OpCodes.Ldarg_1); ilgen.Emit(OpCodes.Ldstr, argumentName); callInstanceMemento(ilgen, "GetChildrenArray"); - MethodInfo methodCreateInstanceArray = (typeof (InstanceManager).GetMethod("CreateInstanceArray")); + MethodInfo methodCreateInstanceArray = (typeof (StructureMap.Pipeline.IInstanceCreator).GetMethod("CreateInstanceArray")); ilgen.Emit(OpCodes.Callvirt, methodCreateInstanceArray); cast(ilgen, argumentType); } Modified: trunk/Source/StructureMap/Emitting/Parameters/ChildParameterEmitter.cs =================================================================== --- trunk/Source/StructureMap/Emitting/Parameters/ChildParameterEmitter.cs 2008-04-06 19:13:08 UTC (rev 73) +++ trunk/Source/StructureMap/Emitting/Parameters/ChildParameterEmitter.cs 2008-04-06 19:52:39 UTC (rev 74) @@ -30,9 +30,8 @@ ilgen.Emit(OpCodes.Ldarg_1); ilgen.Emit(OpCodes.Ldstr, parameterName); ilgen.Emit(OpCodes.Ldstr, fullName); - ilgen.Emit(OpCodes.Ldarg_0); + ilgen.Emit(OpCodes.Ldarg_2); - callGetInstanceManager(ilgen); callInstanceMemento(ilgen, "GetChild"); cast(ilgen, parameterType); } Modified: trunk/Source/StructureMap/Emitting/Parameters/ParameterEmitter.cs =================================================================== --- trunk/Source/StructureMap/Emitting/Parameters/ParameterEmitter.cs 2008-04-06 19:13:08 UTC (rev 73) +++ trunk/Source/StructureMap/Emitting/Parameters/ParameterEmitter.cs 2008-04-06 19:52:39 UTC (rev 74) @@ -79,13 +79,6 @@ ilgen.Emit(OpCodes.Callvirt, _method); } - protected void callGetInstanceManager(ILGenerator ilgen) - { - PropertyInfo property = (typeof (InstanceBuilder)).GetProperty("Manager"); - MethodInfo methodGetInstanceManager = property.GetGetMethod(); - ilgen.Emit(OpCodes.Call, methodGetInstanceManager); - } - protected void cast(ILGenerator ilgen, Type parameterType) { ilgen.Emit(OpCodes.Castclass, parameterType); Modified: trunk/Source/StructureMap/InstanceFactory.cs =================================================================== --- trunk/Source/StructureMap/InstanceFactory.cs 2008-04-06 19:13:08 UTC (rev 73) +++ trunk/Source/StructureMap/InstanceFactory.cs 2008-04-06 19:52:39 UTC (rev 74) @@ -145,7 +145,7 @@ try { InstanceBuilder builder = _instanceBuilders[memento.ConcreteKey]; - object constructedInstance = builder.BuildInstance(memento, null); + object constructedInstance = builder.BuildInstance(memento, builder.Manager); CompoundInterceptor interceptor = _interceptorLibrary.FindInterceptor(constructedInstance.GetType()); return interceptor.Process(constructedInstance); } Modified: trunk/Source/StructureMap/InstanceManager.cs =================================================================== --- trunk/Source/StructureMap/InstanceManager.cs 2008-04-06 19:13:08 UTC (rev 73) +++ trunk/Source/StructureMap/InstanceManager.cs 2008-04-06 19:52:39 UTC (rev 74) @@ -12,7 +12,7 @@ /// <summary> /// A collection of IInstanceFactory's. /// </summary> - public class InstanceManager : IInstanceManager, IEnumerable + public class InstanceManager : IInstanceManager, IEnumerable, StructureMap.Pipeline.IInstanceCreator { private readonly InstanceDefaultManager _defaultManager; private readonly Dictionary<Type, IInstanceFactory> _factories; Modified: trunk/Source/StructureMap/InstanceMemento.cs =================================================================== --- trunk/Source/StructureMap/InstanceMemento.cs 2008-04-06 19:13:08 UTC (rev 73) +++ trunk/Source/StructureMap/InstanceMemento.cs 2008-04-06 19:52:39 UTC (rev 74) @@ -187,27 +187,27 @@ /// </summary> /// <param name="key"></param> /// <param name="typeName"></param> - /// <param name="manager"></param> + /// <param name="instanceCreator"></param> /// <returns></returns> - public virtual object GetChild(string key, string typeName, InstanceManager manager) + public virtual object GetChild(string key, string typeName, Pipeline.IInstanceCreator instanceCreator) { InstanceMemento memento = GetChildMemento(key); object returnValue = null; if (memento == null) { - returnValue = buildDefaultChild(key, manager, typeName); + returnValue = buildDefaultChild(key, instanceCreator, typeName); } else { - returnValue = manager.CreateInstance(typeName, memento); + returnValue = instanceCreator.CreateInstance(typeName, memento); } return returnValue; } - private static object buildDefaultChild(string key, InstanceManager manager, string typeName) + private static object buildDefaultChild(string key, StructureMap.Pipeline.IInstanceCreator manager, string typeName) { object returnValue; try Modified: trunk/Source/StructureMap/Pipeline/ConfiguredInstance.cs =================================================================== --- trunk/Source/StructureMap/Pipeline/ConfiguredInstance.cs 2008-04-06 19:13:08 UTC (rev 73) +++ trunk/Source/StructureMap/Pipeline/ConfiguredInstance.cs 2008-04-06 19:52:39 UTC (rev 74) @@ -6,7 +6,7 @@ { InstanceMemento[] GetChildrenArray(string propertyName); string GetProperty(string propertyName); - object GetChild(string propertyName, string typeName, InstanceManager manager); + object GetChild(string propertyName, string typeName, IInstanceCreator instanceCreator); } public class ConfiguredInstance : Instance Modified: trunk/Source/StructureMap/Pipeline/Instance.cs =================================================================== --- trunk/Source/StructureMap/Pipeline/Instance.cs 2008-04-06 19:13:08 UTC (rev 73) +++ trunk/Source/StructureMap/Pipeline/Instance.cs 2008-04-06 19:52:39 UTC (rev 74) @@ -1,4 +1,5 @@ using System; +using System.Data; using System.Web.UI; using StructureMap.Interceptors; @@ -8,6 +9,9 @@ { T CreateInstance<T>(string referenceKey); T CreateInstance<T>(); + Array CreateInstanceArray(string pluginType, InstanceMemento[] instanceMementoes); + object CreateInstance(string typeName, InstanceMemento memento); + object CreateInstance(string typeName); } public interface IInstanceDiagnostics Modified: trunk/Source/StructureMap.Testing.Widget/Decision.cs =================================================================== --- trunk/Source/StructureMap.Testing.Widget/Decision.cs 2008-04-06 19:13:08 UTC (rev 73) +++ trunk/Source/StructureMap.Testing.Widget/Decision.cs 2008-04-06 19:52:39 UTC (rev 74) @@ -34,7 +34,7 @@ public override object BuildInstance(IConfiguredInstance instance, StructureMap.Pipeline.IInstanceCreator creator) { return new Decision( - (Rule[]) Manager.CreateInstanceArray("StructureMap.Testing.Widget", instance.GetChildrenArray("Rules"))); + (Rule[]) creator.CreateInstanceArray("StructureMap.Testing.Widget", instance.GetChildrenArray("Rules"))); } } } \ No newline at end of file Modified: trunk/Source/StructureMap.Testing.Widget/Hierarchy.cs =================================================================== --- trunk/Source/StructureMap.Testing.Widget/Hierarchy.cs 2008-04-06 19:13:08 UTC (rev 73) +++ trunk/Source/StructureMap.Testing.Widget/Hierarchy.cs 2008-04-06 19:52:39 UTC (rev 74) @@ -112,7 +112,7 @@ { return new Child( instance.GetProperty("Name"), - (GrandChild) instance.GetChild("MyGrandChild", "StructureMap.Testing.Widget.GrandChild", Manager)); + (GrandChild) instance.GetChild("MyGrandChild", "StructureMap.Testing.Widget.GrandChild", creator)); } } } \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |