|
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.
|