From: <jer...@us...> - 2008-10-18 13:26:17
|
Revision: 186 http://structuremap.svn.sourceforge.net/structuremap/?rev=186&view=rev Author: jeremydmiller Date: 2008-10-18 13:26:11 +0000 (Sat, 18 Oct 2008) Log Message: ----------- Added a last minute defensive programming check on TheDefaultInstanceIsConcreteType Modified Paths: -------------- trunk/Source/StructureMap/Configuration/DSL/Expressions/CreatePluginFamilyExpression.cs trunk/Source/StructureMap/StructureMapException.resx trunk/Source/StructureMap.Testing/Configuration/DSL/CreatePluginFamilyTester.cs Modified: trunk/Source/StructureMap/Configuration/DSL/Expressions/CreatePluginFamilyExpression.cs =================================================================== --- trunk/Source/StructureMap/Configuration/DSL/Expressions/CreatePluginFamilyExpression.cs 2008-10-18 13:13:17 UTC (rev 185) +++ trunk/Source/StructureMap/Configuration/DSL/Expressions/CreatePluginFamilyExpression.cs 2008-10-18 13:26:11 UTC (rev 186) @@ -71,6 +71,11 @@ ExpressionValidator.ValidatePluggabilityOf(concreteType).IntoPluginType(_pluginType); + if (!PluginCache.GetPlugin(concreteType).CanBeAutoFilled) + { + throw new StructureMapException(231); + } + return alterAndContinue(family => { ConfiguredInstance instance = Modified: trunk/Source/StructureMap/StructureMapException.resx =================================================================== --- trunk/Source/StructureMap/StructureMapException.resx 2008-10-18 13:13:17 UTC (rev 185) +++ trunk/Source/StructureMap/StructureMapException.resx 2008-10-18 13:26:11 UTC (rev 186) @@ -262,4 +262,7 @@ <data name="125" xml:space="preserve"> <value>Cannot plug an abstract class or an interface</value> </data> + <data name="231" xml:space="preserve"> + <value>Cannot use the "TheDefaultIsConcreteType" method with an object that has primitive constructor arguments. Use the "TheDefault.Is.OfConcreteType<T>()" method instead and specify the primitive constructor arguments</value> + </data> </root> \ No newline at end of file Modified: trunk/Source/StructureMap.Testing/Configuration/DSL/CreatePluginFamilyTester.cs =================================================================== --- trunk/Source/StructureMap.Testing/Configuration/DSL/CreatePluginFamilyTester.cs 2008-10-18 13:13:17 UTC (rev 185) +++ trunk/Source/StructureMap.Testing/Configuration/DSL/CreatePluginFamilyTester.cs 2008-10-18 13:26:11 UTC (rev 186) @@ -35,7 +35,30 @@ { } + public class ClassWithStringInConstructor + { + public ClassWithStringInConstructor(string name){} + } + [Test] + public void cannot_use_a_class_with_a_primitive_constructor_in_the_TheDefaultIsConcreteType_shortcut() + { + try + { + var container = new Container(x => + { + x.ForRequestedType<ClassWithStringInConstructor>().TheDefaultIsConcreteType + <ClassWithStringInConstructor>(); + }); + Assert.Fail("Should have thrown exception 231"); + } + catch (StructureMapException e) + { + e.ErrorCode.ShouldEqual(231); + } + } + + [Test] public void Add_an_instance_by_lambda() { var manager = This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |