From: <jer...@us...> - 2009-12-26 20:51:14
|
Revision: 303 http://structuremap.svn.sourceforge.net/structuremap/?rev=303&view=rev Author: jeremydmiller Date: 2009-12-26 20:51:05 +0000 (Sat, 26 Dec 2009) Log Message: ----------- adding more capabilities to the GenericFamilyExpression to bring it up to par with the strong typed version Modified Paths: -------------- trunk/Source/StructureMap/Configuration/DSL/Expressions/GenericFamilyExpression.cs Modified: trunk/Source/StructureMap/Configuration/DSL/Expressions/GenericFamilyExpression.cs =================================================================== --- trunk/Source/StructureMap/Configuration/DSL/Expressions/GenericFamilyExpression.cs 2009-12-26 20:31:30 UTC (rev 302) +++ trunk/Source/StructureMap/Configuration/DSL/Expressions/GenericFamilyExpression.cs 2009-12-26 20:51:05 UTC (rev 303) @@ -67,6 +67,23 @@ return TheDefaultIsConcreteType(concreteType); } + + public LambdaInstance<object> Use(Func<IContext, object> func) + { + var instance = new LambdaInstance<object>(func); + Use(instance); + + return instance; + } + + public LambdaInstance<object> Add(Func<IContext, object> func) + { + var instance = new LambdaInstance<object>(func); + Add(instance); + + return instance; + } + /// <summary> /// Shortcut to add a value by type /// </summary> @@ -200,6 +217,45 @@ } /// <summary> + /// Convenience method to mark a PluginFamily as a Singleton + /// </summary> + /// <returns></returns> + public GenericFamilyExpression Singleton() + { + return LifecycleIs(InstanceScope.Singleton); + } + + + /// <summary> + /// Convenience method to mark a PluginFamily as a Hybrid lifecycle + /// </summary> + /// <returns></returns> + public GenericFamilyExpression HybridHttpOrThreadLocalScoped() + { + return LifecycleIs(InstanceScope.Hybrid); + } + + /// <summary> + /// Convenience method to mark a PluginFamily as HttpContext scoped + /// </summary> + /// <returns></returns> + public GenericFamilyExpression HttpContextScoped() + { + return LifecycleIs(InstanceScope.HttpContext); + } + + /// <summary> + /// + /// </summary> + /// <param name="lifecycle"></param> + /// <returns></returns> + public GenericFamilyExpression LifecycleIs(InstanceScope lifecycle) + { + return alterAndContinue(family => family.SetScopeTo(lifecycle)); + } + + + /// <summary> /// Shortcut method to add an additional Instance to this Plugin Type /// as just a Concrete Type. You can also chain other declarations after /// this method to add constructor and setter arguments This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |