From: <jer...@us...> - 2009-06-12 20:13:40
|
Revision: 250 http://structuremap.svn.sourceforge.net/structuremap/?rev=250&view=rev Author: jeremydmiller Date: 2009-06-12 20:13:34 +0000 (Fri, 12 Jun 2009) Log Message: ----------- fixing a small problem for Dovetail Modified Paths: -------------- trunk/Source/StructureMap/Configuration/DSL/Expressions/CreatePluginFamilyExpression.cs trunk/Source/StructureMap/Pipeline/MainObjectCache.cs Modified: trunk/Source/StructureMap/Configuration/DSL/Expressions/CreatePluginFamilyExpression.cs =================================================================== --- trunk/Source/StructureMap/Configuration/DSL/Expressions/CreatePluginFamilyExpression.cs 2009-06-08 15:10:10 UTC (rev 249) +++ trunk/Source/StructureMap/Configuration/DSL/Expressions/CreatePluginFamilyExpression.cs 2009-06-12 20:13:34 UTC (rev 250) @@ -103,13 +103,13 @@ } /// <summary> - /// Shorthand way of saying TheDefaultIsConcreteType<> + /// Shorthand way of saying TheDefault.Is.OfConcreteType<> /// </summary> /// <typeparam name="CONCRETETYPE"></typeparam> /// <returns></returns> - public CreatePluginFamilyExpression<PLUGINTYPE> Use<CONCRETETYPE>() where CONCRETETYPE : PLUGINTYPE + public SmartInstance<CONCRETETYPE> Use<CONCRETETYPE>() where CONCRETETYPE : PLUGINTYPE { - return TheDefaultIsConcreteType<CONCRETETYPE>(); + return TheDefault.Is.OfConcreteType<CONCRETETYPE>(); } /// <summary> Modified: trunk/Source/StructureMap/Pipeline/MainObjectCache.cs =================================================================== --- trunk/Source/StructureMap/Pipeline/MainObjectCache.cs 2009-06-08 15:10:10 UTC (rev 249) +++ trunk/Source/StructureMap/Pipeline/MainObjectCache.cs 2009-06-12 20:13:34 UTC (rev 250) @@ -26,8 +26,19 @@ public void Set(Type pluginType, Instance instance, object value) { - var key = new InstanceKey(instance, pluginType); - _objects.Add(key, value); + if (value == null) return; + + try + { + var key = new InstanceKey(instance, pluginType); + _objects.Add(key, value); + } + catch (ArgumentException e) + { + string message = string.Format("Duplicate key for Instance {0} of PluginType {1}", instance.Name, + pluginType.AssemblyQualifiedName); + throw new ArgumentException(message, e); + } } public void DisposeAndClear() @@ -36,6 +47,8 @@ { foreach (var @object in _objects.Values) { + if (@object is Container) continue; + IDisposable disposable = @object as IDisposable; if (disposable != null) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |