From: <jer...@us...> - 2009-12-26 05:46:06
|
Revision: 296 http://structuremap.svn.sourceforge.net/structuremap/?rev=296&view=rev Author: jeremydmiller Date: 2009-12-26 05:45:56 +0000 (Sat, 26 Dec 2009) Log Message: ----------- Big R# code cleanup after the big re-architecture Modified Paths: -------------- trunk/Source/StructureMap/Attributes/PluggableAttribute.cs trunk/Source/StructureMap/Attributes/PluginFamilyAttribute.cs trunk/Source/StructureMap/BuildSession.cs trunk/Source/StructureMap/CloseGenericTypeExpression.cs trunk/Source/StructureMap/Configuration/DSL/Expressions/CreatePluginFamilyExpression.cs trunk/Source/StructureMap/Configuration/DSL/Expressions/GenericFamilyExpression.cs trunk/Source/StructureMap/Configuration/DSL/Expressions/InstanceExpression.cs trunk/Source/StructureMap/Configuration/DSL/Expressions/ProfileExpression.cs trunk/Source/StructureMap/Configuration/DSL/Registry.cs trunk/Source/StructureMap/Configuration/DSL/SetterConvention.cs trunk/Source/StructureMap/Configuration/GraphBuilder.cs trunk/Source/StructureMap/Configuration/XmlConstants.cs trunk/Source/StructureMap/ConfigurationExpression.cs trunk/Source/StructureMap/Construction/InstanceBuilder.cs trunk/Source/StructureMap/Container.cs trunk/Source/StructureMap/Diagnostics/Doctor.cs trunk/Source/StructureMap/Diagnostics/GraphLog.cs trunk/Source/StructureMap/Diagnostics/InstanceToken.cs trunk/Source/StructureMap/Exceptions/StructureMapException.cs trunk/Source/StructureMap/ExplicitArgsExpression.cs trunk/Source/StructureMap/Extensions.cs trunk/Source/StructureMap/Graph/AssemblyScanner.cs trunk/Source/StructureMap/Graph/FindAllTypesFilter.cs trunk/Source/StructureMap/Graph/GenericsPluginGraph.cs trunk/Source/StructureMap/Graph/IHeavyweightTypeScanner.cs trunk/Source/StructureMap/Graph/IPluginFamily.cs trunk/Source/StructureMap/Graph/Plugin.cs trunk/Source/StructureMap/Graph/PluginCache.cs trunk/Source/StructureMap/Graph/PluginFamily.cs trunk/Source/StructureMap/Graph/PluginGraph.cs trunk/Source/StructureMap/Graph/SetterProperty.cs trunk/Source/StructureMap/Graph/SetterPropertyCollection.cs trunk/Source/StructureMap/Graph/SingleImplementationScanner.cs trunk/Source/StructureMap/Graph/TypePath.cs trunk/Source/StructureMap/IContainer.cs trunk/Source/StructureMap/IContext.cs trunk/Source/StructureMap/IInstanceFactory.cs trunk/Source/StructureMap/InitializationExpression.cs trunk/Source/StructureMap/InstanceCache.cs trunk/Source/StructureMap/InstanceFactory.cs trunk/Source/StructureMap/InstanceMemento.cs trunk/Source/StructureMap/Interceptors/FilteredInstanceInterceptor.cs trunk/Source/StructureMap/MementoSource.cs trunk/Source/StructureMap/MemoryInstanceMemento.cs trunk/Source/StructureMap/Model.cs trunk/Source/StructureMap/ObjectFactory.cs trunk/Source/StructureMap/Pipeline/BuildFrame.cs trunk/Source/StructureMap/Pipeline/BuildStack.cs trunk/Source/StructureMap/Pipeline/ConditionalInstance.cs trunk/Source/StructureMap/Pipeline/ConfiguredInstance.Expressions.cs trunk/Source/StructureMap/Pipeline/ConfiguredInstance.cs trunk/Source/StructureMap/Pipeline/ConstructorInstance.cs trunk/Source/StructureMap/Pipeline/DefaultInstance.cs trunk/Source/StructureMap/Pipeline/EnumerableInstance.cs trunk/Source/StructureMap/Pipeline/ExplicitArguments.cs trunk/Source/StructureMap/Pipeline/IEnumerableCoercion.cs trunk/Source/StructureMap/Pipeline/IObjectCache.cs trunk/Source/StructureMap/Pipeline/Instance.cs trunk/Source/StructureMap/Pipeline/LambdaInstance.cs trunk/Source/StructureMap/Pipeline/NulloObjectCache.cs trunk/Source/StructureMap/Pipeline/ObjectBuilder.cs trunk/Source/StructureMap/Pipeline/ObjectInstance.cs trunk/Source/StructureMap/Pipeline/Profile.cs trunk/Source/StructureMap/Pipeline/ProfileManager.cs trunk/Source/StructureMap/Pipeline/PropertyExpression.cs trunk/Source/StructureMap/Pipeline/PrototypeInstance.cs trunk/Source/StructureMap/Pipeline/ReferencedInstance.cs trunk/Source/StructureMap/Pipeline/SerializedInstance.cs trunk/Source/StructureMap/Pipeline/SmartInstance.cs trunk/Source/StructureMap/Pipeline/ThreadLocalStorageLifecycle.cs trunk/Source/StructureMap/PipelineGraph.cs trunk/Source/StructureMap/Properties/AssemblyInfo.cs trunk/Source/StructureMap/ReflectionHelper.cs trunk/Source/StructureMap/Source/DirectoryXmlMementoSource.cs trunk/Source/StructureMap/Source/SingleEmbeddedXmlMementoSource.cs trunk/Source/StructureMap/Source/TemplatedMementoSource.cs trunk/Source/StructureMap/Source/XmlAttributeInstanceMemento.cs trunk/Source/StructureMap/Source/XmlFileMementoSource.cs trunk/Source/StructureMap/Source/XmlMementoSource.cs trunk/Source/StructureMap/Source/XmlNodeInstanceMemento.cs trunk/Source/StructureMap/Source/XmlTemplater.cs trunk/Source/StructureMap/StructureMapConfiguration.cs trunk/Source/StructureMap/SystemRegistry.cs trunk/Source/StructureMap/TypeExtensions.cs trunk/Source/StructureMap/Util/Cache.cs trunk/Source/StructureMap.AutoMocking/AutoMockedContainer.cs trunk/Source/StructureMap.AutoMocking/AutoMocker.cs trunk/Source/StructureMap.AutoMocking/MoqFactory.cs trunk/Source/StructureMap.AutoMocking/RhinoAutoMocker.cs trunk/Source/StructureMap.AutoMocking/RhinoMockRepositoryProxy.cs trunk/Source/StructureMap.AutoMocking/ServiceLocator.cs trunk/Source/StructureMap.DebuggerVisualizers/ContainerDetail.cs trunk/Source/StructureMap.DebuggerVisualizers/ContainerForm.cs trunk/Source/StructureMap.DebuggerVisualizers/ContainerVisualizer.cs trunk/Source/StructureMap.DebuggerVisualizers/ContainerVisualizerObjectSource.cs trunk/Source/StructureMap.DebuggerVisualizers/DisplayHelper.cs trunk/Source/StructureMap.DebuggerVisualizers/Properties/AssemblyInfo.cs trunk/Source/StructureMap.DebuggerVisualizers.Testing/Program.cs trunk/Source/StructureMap.DebuggerVisualizers.Testing/Properties/AssemblyInfo.cs trunk/Source/StructureMap.DebuggerVisualizers.Testing/SampleTypes.cs trunk/Source/StructureMap.DebuggerVisualizers.Testing/VisualizerTests.cs trunk/Source/StructureMap.DeploymentTasks/AddAssembly.cs trunk/Source/StructureMap.DeploymentTasks/SetOverrideTask.cs trunk/Source/StructureMap.DeploymentTasks/SubstitutionTask.cs trunk/Source/StructureMap.DeploymentTasks/Versioning/CheckVersionTask.cs trunk/Source/StructureMap.DeploymentTasks/Versioning/DeployedDirectory.cs trunk/Source/StructureMap.DeploymentTasks/Versioning/DeployedFile.cs trunk/Source/StructureMap.DeploymentTasks/Versioning/DotNetAssembly.cs trunk/Source/StructureMap.DeploymentTasks/Versioning/GenerateVersionReport.cs trunk/Source/StructureMap.Testing/AutoMocking/MoqAutoMockerTester.cs trunk/Source/StructureMap.Testing/AutoWiringExamples.cs trunk/Source/StructureMap.Testing/Bugs/BuildUpBug.cs trunk/Source/StructureMap.Testing/Bugs/IDictionaryAndXmlBugTester.cs trunk/Source/StructureMap.Testing/Bugs/SingletonShouldBeLazy.cs trunk/Source/StructureMap.Testing/Bugs/SpecifyScopeInConfigureTester.cs trunk/Source/StructureMap.Testing/Configuration/DSL/AddInstanceTester.cs trunk/Source/StructureMap.Testing/Configuration/DictionaryAndArrayArgumentTester.cs trunk/Source/StructureMap.Testing/Diagnostics/DoctorTester.cs trunk/Source/StructureMap.Testing/Diagnostics/ValidationBuildSessionTester.cs trunk/Source/StructureMap.Testing/Examples/BuildUp.cs trunk/Source/StructureMap.Testing/Examples/Interception.cs trunk/Source/StructureMap.Testing/Examples/RegisteringWithTheAPI.cs trunk/Source/StructureMap.Testing/Examples.cs trunk/Source/StructureMap.Testing/GenericsAcceptanceTester.cs trunk/Source/StructureMap.Testing/GenericsIntegrationTester.cs trunk/Source/StructureMap.Testing/Graph/ArrayConstructorTester.cs trunk/Source/StructureMap.Testing/Graph/AssemblyScannerTester.cs trunk/Source/StructureMap.Testing/Graph/ContainerTester.cs trunk/Source/StructureMap.Testing/Graph/ConventionBasedSetterInjectionTester.cs trunk/Source/StructureMap.Testing/Graph/DefaultConventionScanningTester.cs trunk/Source/StructureMap.Testing/Graph/DynamicInjectionTester.cs trunk/Source/StructureMap.Testing/Graph/FillDependenciesTester.cs trunk/Source/StructureMap.Testing/Graph/FullStackFacadeTester.cs trunk/Source/StructureMap.Testing/Graph/GenericsPluginGraphTester.cs trunk/Source/StructureMap.Testing/Graph/InstanceFactoryTester.cs trunk/Source/StructureMap.Testing/Graph/InstanceTarget.cs trunk/Source/StructureMap.Testing/Graph/Interceptors/CompoundInterceptorTester.cs trunk/Source/StructureMap.Testing/Graph/Interceptors/TypeInterceptionTester.cs trunk/Source/StructureMap.Testing/Graph/ParameterInfoCollection.cs trunk/Source/StructureMap.Testing/Graph/PluginFamilyTester.cs trunk/Source/StructureMap.Testing/Graph/PluginTester.cs trunk/Source/StructureMap.Testing/Graph/SetterInjectionEmittingTester.cs trunk/Source/StructureMap.Testing/Graph/SingleImplementationScannerTester.cs trunk/Source/StructureMap.Testing/Graph/Source/XmlMementoSourceTester.cs trunk/Source/StructureMap.Testing/Graph/TestExplicitArguments.cs trunk/Source/StructureMap.Testing/Graph/TypeFindingTester.cs trunk/Source/StructureMap.Testing/Graph/TypePathTester.cs trunk/Source/StructureMap.Testing/InstanceCacheTester.cs trunk/Source/StructureMap.Testing/InstanceMementoInstanceCreationTester.cs trunk/Source/StructureMap.Testing/MementoTester.cs trunk/Source/StructureMap.Testing/ModelQueryTester.cs trunk/Source/StructureMap.Testing/ObjectFactoryInitializeTester.cs trunk/Source/StructureMap.Testing/ObjectFactoryTester.cs trunk/Source/StructureMap.Testing/PerRequestInterceptorTester.cs trunk/Source/StructureMap.Testing/Pipeline/BuildStackTester.cs trunk/Source/StructureMap.Testing/Pipeline/BuildStrategiesTester.cs trunk/Source/StructureMap.Testing/Pipeline/ConditionalInstanceTester.cs trunk/Source/StructureMap.Testing/Pipeline/ConfiguredInstanceTester.cs trunk/Source/StructureMap.Testing/Pipeline/ConstructorInstanceTester.cs trunk/Source/StructureMap.Testing/Pipeline/ContainerDisposalTester.cs trunk/Source/StructureMap.Testing/Pipeline/ContainerIsInTheContainerTester.cs trunk/Source/StructureMap.Testing/Pipeline/DefaultInstanceTester.cs trunk/Source/StructureMap.Testing/Pipeline/EnumerableInstanceTester.cs trunk/Source/StructureMap.Testing/Pipeline/GenericsHelperExpressionTester.cs trunk/Source/StructureMap.Testing/Pipeline/HybridBuildLifecycleTester.cs trunk/Source/StructureMap.Testing/Pipeline/MissingInstanceTester.cs trunk/Source/StructureMap.Testing/Pipeline/NestedContainerSupportTester.cs trunk/Source/StructureMap.Testing/Pipeline/ObjectBuilderTester.cs trunk/Source/StructureMap.Testing/Pipeline/OptionalSetterInjectionTester.cs trunk/Source/StructureMap.Testing/Pipeline/ProfileManagerTester.cs trunk/Source/StructureMap.Testing/Pipeline/PrototypeInstanceTester.cs trunk/Source/StructureMap.Testing/Pipeline/RedirectTester.cs trunk/Source/StructureMap.Testing/Pipeline/RedirectingTester.cs trunk/Source/StructureMap.Testing/Pipeline/SmartInstanceTester.cs trunk/Source/StructureMap.Testing/Pipeline/StubBuildSession.cs trunk/Source/StructureMap.Testing/Pipeline/ThreadLocalStorageLifecycleTester.cs trunk/Source/StructureMap.Testing/PrimitiveArrayTester.cs trunk/Source/StructureMap.Testing/ReadingRegistriesFromXmlTester.cs trunk/Source/StructureMap.Testing/SpecificationExtensions.cs trunk/Source/StructureMap.Testing/StructureMapConfigurationTester.cs trunk/Source/StructureMap.Testing/TestData/DataMother.cs trunk/Source/StructureMap.Testing/TypeExtensionsTester.cs trunk/Source/StructureMap.Testing/Util/CacheTester.cs trunk/Source/StructureMap.Testing/XmlWriting/ElementChecker.cs trunk/Source/StructureMap.Testing.GenericWidgets/Widgets.cs trunk/Source/StructureMap.Testing.Widget/ArrayConstruction.cs trunk/Source/StructureMap.Testing.Widget/Columns.cs trunk/Source/StructureMap.Testing.Widget/Hierarchy.cs trunk/Source/StructureMap.Testing.Widget/IWidget.cs trunk/Source/StructureMap.Testing.Widget/Rule.cs trunk/Source/StructureMap.Testing.Widget/WidgetMaker.cs trunk/Source/StructureMap.Testing.Widget3/Gateways.cs trunk/Source/StructureMap.Testing.Widget3/IService.cs trunk/Source/StructureMap.Testing.Widget5/AutoFilledGridColumn.cs trunk/Source/StructureMap.Testing.Widget5/BasicGridColumn.cs trunk/Source/StructureMap.Testing.Widget5/CannotBeAutoFilledGridColumn.cs trunk/Source/StructureMap.Testing.Widget5/OtherGridColumn.cs trunk/Source/StructureMapDoctor/Program.cs trunk/Source/TableOfContentsBuilder/Program.cs trunk/Source/TableOfContentsBuilder/Properties/AssemblyInfo.cs Modified: trunk/Source/StructureMap/Attributes/PluggableAttribute.cs =================================================================== --- trunk/Source/StructureMap/Attributes/PluggableAttribute.cs 2009-12-26 05:37:13 UTC (rev 295) +++ trunk/Source/StructureMap/Attributes/PluggableAttribute.cs 2009-12-26 05:45:56 UTC (rev 296) @@ -26,7 +26,7 @@ /// <returns></returns> public static bool MarkedAsPluggable(Type objectType) { - PluggableAttribute att = GetCustomAttribute(objectType, typeof (PluggableAttribute), false) as PluggableAttribute; + var att = GetCustomAttribute(objectType, typeof (PluggableAttribute), false) as PluggableAttribute; return (att != null); } } Modified: trunk/Source/StructureMap/Attributes/PluginFamilyAttribute.cs =================================================================== --- trunk/Source/StructureMap/Attributes/PluginFamilyAttribute.cs 2009-12-26 05:37:13 UTC (rev 295) +++ trunk/Source/StructureMap/Attributes/PluginFamilyAttribute.cs 2009-12-26 05:45:56 UTC (rev 296) @@ -26,11 +26,7 @@ /// If set, determines the shared "scope" of the instance -- PerRequest, Singleton, ThreadLocal, /// HttpContext, etc. /// </summary> - public InstanceScope Scope - { - get { return _scope; } - set { _scope = value; } - } + public InstanceScope Scope { get { return _scope; } set { _scope = value; } } public Type SourceType { get; set; } @@ -38,20 +34,13 @@ /// InstanceKey of the default instance. Used to implicitly define the default without /// declaring the instance in StructureMap.config /// </summary> - public string DefaultKey - { - get { return _default; } - } + public string DefaultKey { get { return _default; } } /// <summary> /// Declares the target to be built by StructureMap as a Singleton. One object instance will /// be created for each named instance /// </summary> - public bool IsSingleton - { - get { return _scope == InstanceScope.Singleton; } - set { _scope = value ? InstanceScope.Singleton : InstanceScope.PerRequest; } - } + public bool IsSingleton { get { return _scope == InstanceScope.Singleton; } set { _scope = value ? InstanceScope.Singleton : InstanceScope.PerRequest; } } /// <summary> Modified: trunk/Source/StructureMap/BuildSession.cs =================================================================== --- trunk/Source/StructureMap/BuildSession.cs 2009-12-26 05:37:13 UTC (rev 295) +++ trunk/Source/StructureMap/BuildSession.cs 2009-12-26 05:45:56 UTC (rev 296) @@ -1,21 +1,20 @@ using System; -using System.Collections; using System.Collections.Generic; +using System.Linq; using StructureMap.Graph; using StructureMap.Interceptors; using StructureMap.Pipeline; using StructureMap.Util; -using System.Linq; namespace StructureMap { public class BuildSession : IContext { - protected BuildStack _buildStack = new BuildStack(); + private readonly ObjectBuilder _builder; private readonly InstanceCache _cache = new InstanceCache(); private readonly Cache<Type, Func<object>> _defaults; private readonly PipelineGraph _pipelineGraph; - private readonly ObjectBuilder _builder; + protected BuildStack _buildStack = new BuildStack(); public BuildSession(PipelineGraph pipelineGraph, InterceptorLibrary interceptorLibrary, IObjectCache cache) { @@ -45,28 +44,13 @@ { } - protected void clearBuildStack() - { - _buildStack = new BuildStack(); - } + protected PipelineGraph pipelineGraph { get { return _pipelineGraph; } } - protected PipelineGraph pipelineGraph - { - get { return _pipelineGraph; } - } - #region IContext Members - public string RequestedName - { - get; - set; - } + public string RequestedName { get; set; } - public BuildStack BuildStack - { - get { return _buildStack; } - } + public BuildStack BuildStack { get { return _buildStack; } } public Type ParentType { @@ -87,10 +71,7 @@ return (T) CreateInstance(typeof (T), name); } - BuildFrame IContext.Root - { - get { return _buildStack.Root; } - } + BuildFrame IContext.Root { get { return _buildStack.Root; } } public virtual void RegisterDefault(Type pluginType, object defaultObject) { @@ -122,9 +103,17 @@ return list; } + #endregion + public IEnumerable<T> GetAllInstances<T>() + { + return forType(typeof (T)).AllInstances.Select(x => GetInstance<T>()); + } - #endregion + protected void clearBuildStack() + { + _buildStack = new BuildStack(); + } public virtual object CreateInstance(Type pluginType, string name) { @@ -147,7 +136,7 @@ result = _builder.Resolve(pluginType, instance, this); // TODO: HACK ATTACK!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - var isUnique = forType(pluginType).Lifecycle is UniquePerRequestLifecycle; + bool isUnique = forType(pluginType).Lifecycle is UniquePerRequestLifecycle; if (!isUnique) { _cache.Set(pluginType, instance, result); @@ -176,11 +165,6 @@ return array; } - public IEnumerable<T> GetAllInstances<T>() - { - return forType(typeof (T)).AllInstances.Select(x => GetInstance<T>()); - } - public IEnumerable<object> GetAllInstances(Type pluginType) { return forType(pluginType).AllInstances.Select(x => CreateInstance(pluginType, x)); Modified: trunk/Source/StructureMap/CloseGenericTypeExpression.cs =================================================================== --- trunk/Source/StructureMap/CloseGenericTypeExpression.cs 2009-12-26 05:37:13 UTC (rev 295) +++ trunk/Source/StructureMap/CloseGenericTypeExpression.cs 2009-12-26 05:45:56 UTC (rev 296) @@ -15,10 +15,11 @@ IList<T> As<T>(); } - public class CloseGenericTypeExpression : OpenGenericTypeSpecificationExpression, OpenGenericTypeListSpecificationExpression + public class CloseGenericTypeExpression : OpenGenericTypeSpecificationExpression, + OpenGenericTypeListSpecificationExpression { + private readonly IContainer _container; private readonly object _subject; - private readonly IContainer _container; private Type _pluginType; public CloseGenericTypeExpression(object subject, IContainer container) @@ -27,7 +28,29 @@ _container = container; } + IList<T> OpenGenericTypeListSpecificationExpression.As<T>() + { + IList list = _container.With(_subject.GetType(), _subject).GetAllInstances(_pluginType); + var returnValue = new List<T>(); + foreach (object o in list) + { + returnValue.Add((T) o); + } + + return returnValue; + } + /// <summary> + /// specify what type you'd like the service returned as + /// </summary> + /// <typeparam name="T"></typeparam> + /// <returns></returns> + T OpenGenericTypeSpecificationExpression.As<T>() + { + return (T) _container.With(_subject.GetType(), _subject).GetInstance(_pluginType); + } + + /// <summary> /// Specify the open generic type that should have a single generic parameter /// </summary> /// <param name="type"></param> @@ -48,32 +71,10 @@ _pluginType = type.MakeGenericType(_subject.GetType()); } - /// <summary> - /// specify what type you'd like the service returned as - /// </summary> - /// <typeparam name="T"></typeparam> - /// <returns></returns> - T OpenGenericTypeSpecificationExpression.As<T>() - { - return (T) _container.With(_subject.GetType(), _subject).GetInstance(_pluginType); - } - public OpenGenericTypeListSpecificationExpression GetAllClosedTypesOf(Type type) { closeType(type); return this; } - - IList<T> OpenGenericTypeListSpecificationExpression.As<T>() - { - IList list = _container.With(_subject.GetType(), _subject).GetAllInstances(_pluginType); - var returnValue = new List<T>(); - foreach (var o in list) - { - returnValue.Add((T) o); - } - - return returnValue; - } } } \ No newline at end of file Modified: trunk/Source/StructureMap/Configuration/DSL/Expressions/CreatePluginFamilyExpression.cs =================================================================== --- trunk/Source/StructureMap/Configuration/DSL/Expressions/CreatePluginFamilyExpression.cs 2009-12-26 05:37:13 UTC (rev 295) +++ trunk/Source/StructureMap/Configuration/DSL/Expressions/CreatePluginFamilyExpression.cs 2009-12-26 05:45:56 UTC (rev 296) @@ -33,18 +33,9 @@ /// <summary> /// Define the Default Instance for this PluginType /// </summary> - public IsExpression<PLUGINTYPE> TheDefault - { - get { return new InstanceExpression<PLUGINTYPE>(i => registerDefault(i)); } - } + public IsExpression<PLUGINTYPE> TheDefault { get { return new InstanceExpression<PLUGINTYPE>(i => registerDefault(i)); } } - public InstanceExpression<PLUGINTYPE> MissingNamedInstanceIs - { - get - { - return new InstanceExpression<PLUGINTYPE>(i => _alterations.Add(family => family.MissingInstance = i)); - } - } + public InstanceExpression<PLUGINTYPE> MissingNamedInstanceIs { get { return new InstanceExpression<PLUGINTYPE>(i => _alterations.Add(family => family.MissingInstance = i)); } } /// <summary> /// Add multiple Instance's to this PluginType @@ -93,7 +84,7 @@ { throw new StructureMapException(231); } - + return alterAndContinue(family => { ConfiguredInstance instance = @@ -113,9 +104,9 @@ // This is *my* team's naming convention for generic parameters // I know you may not like it, but it's my article so there var instance = new SmartInstance<CONCRETETYPE>(); - + registerDefault(instance); - + return instance; } @@ -223,7 +214,8 @@ _children.Add( graph => { - var typeInterceptor = new PluginTypeInterceptor(typeof(PLUGINTYPE), (c, o) => interceptor.Process(o, c)); + var typeInterceptor = new PluginTypeInterceptor(typeof (PLUGINTYPE), + (c, o) => interceptor.Process(o, c)); graph.InterceptorLibrary.AddInterceptor(typeInterceptor); }); @@ -243,11 +235,11 @@ { Func<IContext, object, object> function = (c, o) => { - handler(c, (PLUGINTYPE)o); + handler(c, (PLUGINTYPE) o); return o; }; - var interceptor = new PluginTypeInterceptor(typeof(PLUGINTYPE), function); + var interceptor = new PluginTypeInterceptor(typeof (PLUGINTYPE), function); graph.InterceptorLibrary.AddInterceptor(interceptor); }); @@ -290,7 +282,8 @@ _children.Add( graph => { - var interceptor = new PluginTypeInterceptor(typeof(PLUGINTYPE), (c, o) => handler(c, (PLUGINTYPE)o)); + var interceptor = new PluginTypeInterceptor(typeof (PLUGINTYPE), + (c, o) => handler(c, (PLUGINTYPE) o)); graph.InterceptorLibrary.AddInterceptor(interceptor); }); @@ -306,7 +299,7 @@ /// <returns></returns> public CreatePluginFamilyExpression<PLUGINTYPE> AddConcreteType<PLUGGEDTYPE>() { - if (!PluginCache.GetPlugin(typeof(PLUGGEDTYPE)).CanBeAutoFilled) + if (!PluginCache.GetPlugin(typeof (PLUGGEDTYPE)).CanBeAutoFilled) { throw new StructureMapException(231); } @@ -363,7 +356,7 @@ /// <returns></returns> public CreatePluginFamilyExpression<PLUGINTYPE> AlwaysUnique() { - return this.LifecycleIs(new UniquePerRequestLifecycle()); + return LifecycleIs(new UniquePerRequestLifecycle()); } } } \ No newline at end of file Modified: trunk/Source/StructureMap/Configuration/DSL/Expressions/GenericFamilyExpression.cs =================================================================== --- trunk/Source/StructureMap/Configuration/DSL/Expressions/GenericFamilyExpression.cs 2009-12-26 05:37:13 UTC (rev 295) +++ trunk/Source/StructureMap/Configuration/DSL/Expressions/GenericFamilyExpression.cs 2009-12-26 05:45:56 UTC (rev 296) @@ -80,7 +80,7 @@ return instance; } - + /// <summary> /// Shortcut method to add an additional Instance to this Plugin Type /// as just a Concrete Type. This will only work if the Concrete Type Modified: trunk/Source/StructureMap/Configuration/DSL/Expressions/InstanceExpression.cs =================================================================== --- trunk/Source/StructureMap/Configuration/DSL/Expressions/InstanceExpression.cs 2009-12-26 05:37:13 UTC (rev 295) +++ trunk/Source/StructureMap/Configuration/DSL/Expressions/InstanceExpression.cs 2009-12-26 05:45:56 UTC (rev 296) @@ -166,7 +166,7 @@ /// <param name="template"></param> /// <returns></returns> SerializedInstance SerializedCopyOf(T template); - + /// <summary> /// Creates an Instance that will load an ASCX user control from the url /// </summary> @@ -183,7 +183,7 @@ ConditionalInstance<T> Conditional(Action<ConditionalInstance<T>.ConditionalInstanceExpression> configuration); } - public class InstanceExpression<T> : IInstanceExpression<T>, ThenItExpression<T> + public class InstanceExpression<T> : IInstanceExpression<T>, ThenItExpression<T> { private readonly Action<Instance> _action; @@ -194,10 +194,7 @@ #region IsExpression<T> Members - IInstanceExpression<T> IsExpression<T>.Is - { - get { return this; } - } + IInstanceExpression<T> IsExpression<T>.Is { get { return this; } } public void IsThis(Instance instance) { @@ -216,12 +213,6 @@ _action(instance); } - private INSTANCE returnInstance<INSTANCE>(INSTANCE instance) where INSTANCE : Instance - { - Instance(instance); - return instance; - } - public SmartInstance<PLUGGEDTYPE> OfConcreteType<PLUGGEDTYPE>() where PLUGGEDTYPE : T { return returnInstance(new SmartInstance<PLUGGEDTYPE>()); @@ -272,15 +263,19 @@ return returnInstance(new UserControlInstance(url)); } - public ConditionalInstance<T> Conditional(Action<ConditionalInstance<T>.ConditionalInstanceExpression> configuration) + public ConditionalInstance<T> Conditional( + Action<ConditionalInstance<T>.ConditionalInstanceExpression> configuration) { return returnInstance(new ConditionalInstance<T>(configuration)); } - IsExpression<T> ThenItExpression<T>.ThenIt + IsExpression<T> ThenItExpression<T>.ThenIt { get { return this; } } + + private INSTANCE returnInstance<INSTANCE>(INSTANCE instance) where INSTANCE : Instance { - get { return this; } + Instance(instance); + return instance; } } } \ No newline at end of file Modified: trunk/Source/StructureMap/Configuration/DSL/Expressions/ProfileExpression.cs =================================================================== --- trunk/Source/StructureMap/Configuration/DSL/Expressions/ProfileExpression.cs 2009-12-26 05:37:13 UTC (rev 295) +++ trunk/Source/StructureMap/Configuration/DSL/Expressions/ProfileExpression.cs 2009-12-26 05:45:56 UTC (rev 296) @@ -3,8 +3,6 @@ namespace StructureMap.Configuration.DSL.Expressions { - - /// <summary> /// Expression class to help define a runtime Profile /// </summary> @@ -39,13 +37,9 @@ /// <returns></returns> public IsExpression<T> Type<T>() { - return new InstanceExpression<T>(instance => - { - _registry.addExpression(graph => - { - graph.SetDefault(_profileName, typeof(T), instance); - }); - }); + return + new InstanceExpression<T>( + instance => { _registry.addExpression(graph => { graph.SetDefault(_profileName, typeof (T), instance); }); }); } /// <summary> @@ -117,7 +111,6 @@ #region Nested type: InstanceDefaultExpression - /// <summary> /// Expression Builder within defining a Profile /// </summary> @@ -194,7 +187,6 @@ var instance = new ConfiguredInstance(typeof (CONCRETETYPE)); return Use(instance); } - } #endregion Modified: trunk/Source/StructureMap/Configuration/DSL/Registry.cs =================================================================== --- trunk/Source/StructureMap/Configuration/DSL/Registry.cs 2009-12-26 05:37:13 UTC (rev 295) +++ trunk/Source/StructureMap/Configuration/DSL/Registry.cs 2009-12-26 05:45:56 UTC (rev 296) @@ -8,8 +8,6 @@ namespace StructureMap.Configuration.DSL { - - /// <summary> /// A Registry class provides methods and grammars for configuring a Container or ObjectFactory. /// Using a Registry subclass is the recommended way of configuring a StructureMap Container. @@ -203,7 +201,7 @@ internal static bool IsPublicRegistry(Type type) { - if (type.Assembly == typeof(Registry).Assembly) + if (type.Assembly == typeof (Registry).Assembly) { return false; } @@ -295,30 +293,7 @@ return ForRequestedType<PLUGINTYPE>(); } - #region Nested type: BuildWithExpression - /// <summary> - /// Define the constructor and setter arguments for the default T - /// </summary> - /// <typeparam name="T"></typeparam> - public class BuildWithExpression<T> - { - private readonly SmartInstance<T> _instance; - - public BuildWithExpression(SmartInstance<T> instance) - { - _instance = instance; - } - - public SmartInstance<T> Configure - { - get { return _instance; } - } - } - - #endregion - - /// <summary> /// Creates automatic "policies" for which public setters are considered mandatory /// properties by StructureMap that will be "setter injected" as part of the /// construction process. @@ -337,7 +312,7 @@ /// <param name="expression"></param> public void SelectConstructor<T>(Expression<Func<T>> expression) { - PluginCache.GetPlugin(typeof(T)).UseConstructor(expression); + PluginCache.GetPlugin(typeof (T)).UseConstructor(expression); } public void Forward<FROM, TO>() where FROM : class where TO : class @@ -401,10 +376,32 @@ { var raw = c.GetInstance<U>(); var t = raw as T; - if (t == null) throw new ApplicationException(raw.GetType().AssemblyQualifiedName + " could not be cast to " + typeof(T).AssemblyQualifiedName); + if (t == null) + throw new ApplicationException(raw.GetType().AssemblyQualifiedName + " could not be cast to " + + typeof (T).AssemblyQualifiedName); return t; - }); + }); } + + #region Nested type: BuildWithExpression + + /// <summary> + /// Define the constructor and setter arguments for the default T + /// </summary> + /// <typeparam name="T"></typeparam> + public class BuildWithExpression<T> + { + private readonly SmartInstance<T> _instance; + + public BuildWithExpression(SmartInstance<T> instance) + { + _instance = instance; + } + + public SmartInstance<T> Configure { get { return _instance; } } + } + + #endregion } } \ No newline at end of file Modified: trunk/Source/StructureMap/Configuration/DSL/SetterConvention.cs =================================================================== --- trunk/Source/StructureMap/Configuration/DSL/SetterConvention.cs 2009-12-26 05:37:13 UTC (rev 295) +++ trunk/Source/StructureMap/Configuration/DSL/SetterConvention.cs 2009-12-26 05:45:56 UTC (rev 296) @@ -1,7 +1,6 @@ using System; using System.Reflection; using StructureMap.Graph; -using StructureMap; using StructureMap.TypeRules; namespace StructureMap.Configuration.DSL @@ -20,7 +19,7 @@ { Matching(prop => prop.PropertyType == typeof (T)); } - + /// <summary> /// Directs StructureMap to tread all public setters with /// a PropertyType that matches the predicate as a @@ -59,7 +58,7 @@ /// <typeparam name="T"></typeparam> public void WithAnyTypeFromNamespaceContainingType<T>() { - WithAnyTypeFromNamespace(typeof(T).Namespace); + WithAnyTypeFromNamespace(typeof (T).Namespace); } /// <summary> Modified: trunk/Source/StructureMap/Configuration/GraphBuilder.cs =================================================================== --- trunk/Source/StructureMap/Configuration/GraphBuilder.cs 2009-12-26 05:37:13 UTC (rev 295) +++ trunk/Source/StructureMap/Configuration/GraphBuilder.cs 2009-12-26 05:45:56 UTC (rev 296) @@ -14,7 +14,8 @@ private readonly PluginGraph _systemGraph; - public GraphBuilder(Registry[] registries) : this(registries, new PluginGraph()) + public GraphBuilder(Registry[] registries) + : this(registries, new PluginGraph()) { } @@ -40,10 +41,7 @@ _pluginGraph.Seal(); } - public PluginGraph PluginGraph - { - get { return _pluginGraph; } - } + public PluginGraph PluginGraph { get { return _pluginGraph; } } public void AddAssembly(string assemblyName) { @@ -60,10 +58,10 @@ public void AddRegistry(string registryTypeName) { - _pluginGraph.Log.Try(()=> + _pluginGraph.Log.Try(() => { - var type = new TypePath(registryTypeName).FindType(); - Registry registry = (Registry) Activator.CreateInstance(type); + Type type = new TypePath(registryTypeName).FindType(); + var registry = (Registry) Activator.CreateInstance(type); registry.ConfigurePluginGraph(_pluginGraph); }).AndReportErrorAs(290, registryTypeName); } Modified: trunk/Source/StructureMap/Configuration/XmlConstants.cs =================================================================== --- trunk/Source/StructureMap/Configuration/XmlConstants.cs 2009-12-26 05:37:13 UTC (rev 295) +++ trunk/Source/StructureMap/Configuration/XmlConstants.cs 2009-12-26 05:45:56 UTC (rev 296) @@ -29,9 +29,9 @@ public const string PLUGIN_NODE = "Plugin"; public const string PLUGIN_TYPE = "PluginType"; public const string PROFILE_NODE = "Profile"; + public const string REGISTRY = "Registry"; public const string SCOPE = "Scope"; public const string STRUCTUREMAP = "StructureMap"; public const string TYPE_ATTRIBUTE = "Type"; - public const string REGISTRY = "Registry"; } } \ No newline at end of file Modified: trunk/Source/StructureMap/ConfigurationExpression.cs =================================================================== --- trunk/Source/StructureMap/ConfigurationExpression.cs 2009-12-26 05:37:13 UTC (rev 295) +++ trunk/Source/StructureMap/ConfigurationExpression.cs 2009-12-26 05:45:56 UTC (rev 296) @@ -1,6 +1,4 @@ -using System; using System.Collections.Generic; -using System.Linq.Expressions; using System.Xml; using StructureMap.Configuration; using StructureMap.Configuration.DSL; @@ -33,10 +31,7 @@ /// If true, directs StructureMap to look for configuration in the App.config. /// The default value is false. /// </summary> - public bool IncludeConfigurationFromConfigFile - { - set { _parserBuilder.UseAndEnforceExistenceOfDefaultFile = value; } - } + public bool IncludeConfigurationFromConfigFile { set { _parserBuilder.UseAndEnforceExistenceOfDefaultFile = value; } } /// <summary> /// Creates and adds a Registry object of type T. @@ -85,11 +80,5 @@ return builder.Build(); } - - } - - - - } \ No newline at end of file Modified: trunk/Source/StructureMap/Construction/InstanceBuilder.cs =================================================================== --- trunk/Source/StructureMap/Construction/InstanceBuilder.cs 2009-12-26 05:37:13 UTC (rev 295) +++ trunk/Source/StructureMap/Construction/InstanceBuilder.cs 2009-12-26 05:45:56 UTC (rev 296) @@ -1,5 +1,4 @@ using System; -using StructureMap.Pipeline; namespace StructureMap.Construction { @@ -16,22 +15,19 @@ /// </summary> public class InstanceBuilder : IInstanceBuilder { - private readonly Type _pluggedType; - private readonly Func<IArguments, object> _constructor; private readonly Action<IArguments, object> _buildUp; + private readonly Func<IArguments, object> _constructor; + private readonly Type _pluggedType; - public InstanceBuilder(Type pluggedType, Func<IArguments, object> constructor, Action<IArguments, object> buildUp) + public InstanceBuilder(Type pluggedType, Func<IArguments, object> constructor, + Action<IArguments, object> buildUp) { _pluggedType = pluggedType; _constructor = constructor; _buildUp = buildUp; } - public Type PluggedType { get - { - return _pluggedType; - } - } + public Type PluggedType { get { return _pluggedType; } } public virtual object BuildInstance(IArguments args) { Modified: trunk/Source/StructureMap/Container.cs =================================================================== --- trunk/Source/StructureMap/Container.cs 2009-12-26 05:37:13 UTC (rev 295) +++ trunk/Source/StructureMap/Container.cs 2009-12-26 05:45:56 UTC (rev 296) @@ -145,7 +145,6 @@ } - /// <summary> /// Creates or finds the default instance of type T /// </summary> @@ -163,7 +162,6 @@ } - /// <summary> /// Creates or resolves all registered instances of type T /// </summary> @@ -302,7 +300,6 @@ } - /// <summary> /// Creates or resolves all registered instances of the pluginType /// </summary> @@ -475,6 +472,55 @@ #endregion + /// <summary> + /// Injects the given object into a Container by name for the designated + /// pluginType. Mostly used for temporarily setting up return values of the Container + /// to introduce mocks or stubs during automated testing scenarios + /// </summary> + /// <typeparam name="T"></typeparam> + /// <param name="name"></param> + /// <param name="object"></param> + public void Inject<T>(string name, T @object) + { + ObjectInstance instance = new ObjectInstance(@object).WithName(name); + _transientCache.Set(typeof (T), instance, @object); + _pipelineGraph.AddInstance<T>(instance); + } + + /// <summary> + /// Injects the given object into a Container as the default for the designated + /// pluginType. Mostly used for temporarily setting up return values of the Container + /// to introduce mocks or stubs during automated testing scenarios + /// </summary> + /// <param name="pluginType"></param> + /// <param name="object"></param> + public void Inject(Type pluginType, object @object) + { + if (!@object.GetType().CanBeCastTo(pluginType)) + { + throw new StructureMapException(220, pluginType.FullName, + @object.GetType().FullName); + } + + + var instance = new ObjectInstance(@object); + _transientCache.Set(pluginType, instance, @object); + _pipelineGraph.SetDefault(pluginType, instance); + } + + /// <summary> + /// Injects the given object into a Container as the default for the designated + /// PLUGINTYPE. Mostly used for temporarily setting up return values of the Container + /// to introduce mocks or stubs during automated testing scenarios + /// </summary> + /// <typeparam name="PLUGINTYPE"></typeparam> + /// <param name="object"></param> + public void Inject<PLUGINTYPE>(PLUGINTYPE @object) + { + Instance instance = _pipelineGraph.Inject(@object); + _transientCache.Set(typeof (PLUGINTYPE), instance, @object); + } + private object buildInstanceWithArgs(Type pluginType, Instance defaultInstance, ExplicitArguments args, string requestedName) { @@ -534,7 +580,6 @@ } - private BuildSession withNewSession(string name) { return new BuildSession(_pipelineGraph, _interceptorLibrary, _transientCache) @@ -543,6 +588,16 @@ }; } + /// <summary> + /// Sets the default instance for the PluginType + /// </summary> + /// <param name="pluginType"></param> + /// <param name="instance"></param> + public void Inject(Type pluginType, Instance instance) + { + _pipelineGraph.SetDefault(pluginType, instance); + } + #region Nested type: GetInstanceAsExpression public interface GetInstanceAsExpression @@ -588,65 +643,5 @@ } #endregion - - - /// <summary> - /// Injects the given object into a Container by name for the designated - /// pluginType. Mostly used for temporarily setting up return values of the Container - /// to introduce mocks or stubs during automated testing scenarios - /// </summary> - /// <typeparam name="T"></typeparam> - /// <param name="name"></param> - /// <param name="object"></param> - public void Inject<T>(string name, T @object) - { - ObjectInstance instance = new ObjectInstance(@object).WithName(name); - _transientCache.Set(typeof(T), instance, @object); - _pipelineGraph.AddInstance<T>(instance); - } - - /// <summary> - /// Sets the default instance for the PluginType - /// </summary> - /// <param name="pluginType"></param> - /// <param name="instance"></param> - public void Inject(Type pluginType, Instance instance) - { - _pipelineGraph.SetDefault(pluginType, instance); - } - - /// <summary> - /// Injects the given object into a Container as the default for the designated - /// pluginType. Mostly used for temporarily setting up return values of the Container - /// to introduce mocks or stubs during automated testing scenarios - /// </summary> - /// <param name="pluginType"></param> - /// <param name="object"></param> - public void Inject(Type pluginType, object @object) - { - if (!@object.GetType().CanBeCastTo(pluginType)) - { - throw new StructureMapException(220, pluginType.FullName, - @object.GetType().FullName); - } - - - var instance = new ObjectInstance(@object); - _transientCache.Set(pluginType, instance, @object); - _pipelineGraph.SetDefault(pluginType, instance); - } - - /// <summary> - /// Injects the given object into a Container as the default for the designated - /// PLUGINTYPE. Mostly used for temporarily setting up return values of the Container - /// to introduce mocks or stubs during automated testing scenarios - /// </summary> - /// <typeparam name="PLUGINTYPE"></typeparam> - /// <param name="object"></param> - public void Inject<PLUGINTYPE>(PLUGINTYPE @object) - { - var instance = _pipelineGraph.Inject(@object); - _transientCache.Set(typeof(PLUGINTYPE), instance, @object); - } } } \ No newline at end of file Modified: trunk/Source/StructureMap/Diagnostics/Doctor.cs =================================================================== --- trunk/Source/StructureMap/Diagnostics/Doctor.cs 2009-12-26 05:37:13 UTC (rev 295) +++ trunk/Source/StructureMap/Diagnostics/Doctor.cs 2009-12-26 05:45:56 UTC (rev 296) @@ -21,7 +21,11 @@ try { - var setup = new AppDomainSetup {ApplicationBase = BinaryPath, ConfigurationFile = ConfigFile}; + var setup = new AppDomainSetup + { + ApplicationBase = BinaryPath, + ConfigurationFile = ConfigFile + }; if (BinaryPath != null) setup.PrivateBinPath = BinaryPath; domain = AppDomain.CreateDomain("StructureMap-Diagnostics", null, setup); var doctor = Modified: trunk/Source/StructureMap/Diagnostics/GraphLog.cs =================================================================== --- trunk/Source/StructureMap/Diagnostics/GraphLog.cs 2009-12-26 05:37:13 UTC (rev 295) +++ trunk/Source/StructureMap/Diagnostics/GraphLog.cs 2009-12-26 05:45:56 UTC (rev 296) @@ -14,15 +14,9 @@ private readonly List<string> _sources = new List<string>(); private string _currentSource; - public int ErrorCount - { - get { return _errors.Count; } - } + public int ErrorCount { get { return _errors.Count; } } - public string[] Sources - { - get { return _sources.ToArray(); } - } + public string[] Sources { get { return _sources.ToArray(); } } public void StartSource(string description) { Modified: trunk/Source/StructureMap/Diagnostics/InstanceToken.cs =================================================================== --- trunk/Source/StructureMap/Diagnostics/InstanceToken.cs 2009-12-26 05:37:13 UTC (rev 295) +++ trunk/Source/StructureMap/Diagnostics/InstanceToken.cs 2009-12-26 05:45:56 UTC (rev 296) @@ -14,15 +14,9 @@ } - public string Name - { - get { return _name; } - } + public string Name { get { return _name; } } - public string Description - { - get { return _description; } - } + public string Description { get { return _description; } } #region IEquatable<InstanceToken> Members Modified: trunk/Source/StructureMap/Exceptions/StructureMapException.cs =================================================================== --- trunk/Source/StructureMap/Exceptions/StructureMapException.cs 2009-12-26 05:37:13 UTC (rev 295) +++ trunk/Source/StructureMap/Exceptions/StructureMapException.cs 2009-12-26 05:45:56 UTC (rev 296) @@ -14,8 +14,9 @@ private readonly string _msg; - protected StructureMapException(SerializationInfo info, StreamingContext context) : - base(info, context) + protected StructureMapException(SerializationInfo info, StreamingContext context) + : + base(info, context) { _errorCode = info.GetInt32("errorCode"); _msg = info.GetString("msg"); @@ -37,15 +38,9 @@ _msg += ErrorMessages.GetMessage(ErrorCode, args); } - public override string Message - { - get { return _msg; } - } + public override string Message { get { return _msg; } } - public int ErrorCode - { - get { return _errorCode; } - } + public int ErrorCode { get { return _errorCode; } } public override void GetObjectData(SerializationInfo info, StreamingContext context) Modified: trunk/Source/StructureMap/ExplicitArgsExpression.cs =================================================================== --- trunk/Source/StructureMap/ExplicitArgsExpression.cs 2009-12-26 05:37:13 UTC (rev 295) +++ trunk/Source/StructureMap/ExplicitArgsExpression.cs 2009-12-26 05:45:56 UTC (rev 296) @@ -116,6 +116,5 @@ { return _container.GetAllInstances(type, _args); } - } } \ No newline at end of file Modified: trunk/Source/StructureMap/Extensions.cs =================================================================== --- trunk/Source/StructureMap/Extensions.cs 2009-12-26 05:37:13 UTC (rev 295) +++ trunk/Source/StructureMap/Extensions.cs 2009-12-26 05:45:56 UTC (rev 296) @@ -1,7 +1,5 @@ -using System; +using System; using System.Collections.Generic; -using System.Linq; -using System.Text; namespace StructureMap { @@ -33,4 +31,4 @@ return array; } } -} +} \ No newline at end of file Modified: trunk/Source/StructureMap/Graph/AssemblyScanner.cs =================================================================== --- trunk/Source/StructureMap/Graph/AssemblyScanner.cs 2009-12-26 05:37:13 UTC (rev 295) +++ trunk/Source/StructureMap/Graph/AssemblyScanner.cs 2009-12-26 05:45:56 UTC (rev 296) @@ -47,7 +47,7 @@ /// </summary> /// <param name="path"></param> void AssembliesFromPath(string path); - + /// <summary> /// Sweep the designated path and add any Assembly's found in this folder to the /// scanning operation. The assemblyFilter can be used to filter or limit the @@ -72,8 +72,6 @@ #endregion - // ... Other methods - #region Adding TypeScanners /// <summary> @@ -83,6 +81,7 @@ void With(ITypeScanner scanner); void With(IHeavyweightTypeScanner heavyweightScanner); + /// <summary> /// Adds the DefaultConventionScanner to the scanning operations. I.e., a concrete /// class named "Something" that implements "ISomething" will be automatically @@ -173,8 +172,11 @@ void ExcludeType<T>(); // ... Other methods + #endregion + // ... Other methods + /// <summary> /// Scans for PluginType's and Concrete Types that close the given open generic type /// </summary> @@ -189,9 +191,9 @@ { private readonly List<Assembly> _assemblies = new List<Assembly>(); private readonly List<Predicate<Type>> _excludes = new List<Predicate<Type>>(); + private readonly List<IHeavyweightTypeScanner> _heavyweightScanners = new List<IHeavyweightTypeScanner>(); private readonly List<Predicate<Type>> _includes = new List<Predicate<Type>>(); private readonly List<ITypeScanner> _scanners = new List<ITypeScanner>(); - private readonly List<IHeavyweightTypeScanner> _heavyweightScanners = new List<IHeavyweightTypeScanner>(); public AssemblyScanner() { @@ -199,81 +201,9 @@ With<PluggableAttributeScanner>(); } - public int Count - { - get { return _assemblies.Count; } - } + public int Count { get { return _assemblies.Count; } } - internal void ScanForAll(PluginGraph pluginGraph) - { - var heavyweightScan = configureHeavyweightScan(); - - _assemblies.ForEach(assem => scanTypesInAssembly(assem, pluginGraph)); - - performHeavyweightScan(pluginGraph, heavyweightScan); - } - - private void scanTypesInAssembly(Assembly assembly, PluginGraph graph) - { - try - { - foreach (var type in assembly.GetExportedTypes()) - { - if (!isInTheIncludes(type)) continue; - if (isInTheExcludes(type)) continue; - - _scanners.ForEach(scanner => scanner.Process(type, graph)); - } - } - catch (Exception ex) - { - graph.Log.RegisterError(170, ex, assembly.FullName); - } - } - - private TypeMapBuilder configureHeavyweightScan() - { - var typeMapBuilder = new TypeMapBuilder(); - if (_heavyweightScanners.Count > 0) - { - With(typeMapBuilder); - } - return typeMapBuilder; - } - - private void performHeavyweightScan(PluginGraph pluginGraph, TypeMapBuilder typeMapBuilder) - { - var typeMaps = typeMapBuilder.GetTypeMaps(); - _heavyweightScanners.ForEach(scanner => scanner.Process(pluginGraph, typeMaps)); - typeMapBuilder.Dispose(); - } - - private bool isInTheExcludes(Type type) - { - if (_excludes.Count == 0) return false; - - foreach (var exclude in _excludes) - { - if (exclude(type)) return true; - } - - return false; - } - - private bool isInTheIncludes(Type type) - { - if (_includes.Count == 0) return true; - - - foreach (var include in _includes) - { - if (include(type)) return true; - } - - return false; - } - public void Assembly(Assembly assembly) { if (!_assemblies.Contains(assembly)) @@ -287,26 +217,13 @@ Assembly(AppDomain.CurrentDomain.Load(assemblyName)); } - public bool Contains(string assemblyName) - { - foreach (Assembly assembly in _assemblies) - { - if (assembly.GetName().Name == assemblyName) - { - return true; - } - } - - return false; - } - public void With(ITypeScanner scanner) { if (_scanners.Contains(scanner)) return; _scanners.Add(scanner); } - + public void With(IHeavyweightTypeScanner heavyweightScanner) { if (_heavyweightScanners.Contains(heavyweightScanner)) return; @@ -345,25 +262,6 @@ } } - private static Assembly findTheCallingAssembly() - { - var trace = new StackTrace(false); - - Assembly thisAssembly = System.Reflection.Assembly.GetExecutingAssembly(); - Assembly callingAssembly = null; - for (int i = 0; i < trace.FrameCount; i++) - { - StackFrame frame = trace.GetFrame(i); - Assembly assembly = frame.GetMethod().DeclaringType.Assembly; - if (assembly != thisAssembly) - { - callingAssembly = assembly; - break; - } - } - return callingAssembly; - } - public void AssemblyContainingType<T>() { _assemblies.Add(typeof (T).Assembly); @@ -441,16 +339,14 @@ public void AssembliesFromApplicationBaseDirectory(Predicate<Assembly> assemblyFilter) { - var baseDirectory = AppDomain.CurrentDomain.BaseDirectory; + string baseDirectory = AppDomain.CurrentDomain.BaseDirectory; AssembliesFromPath(baseDirectory, assemblyFilter); - var binPath = AppDomain.CurrentDomain.SetupInformation.PrivateBinPath; + string binPath = AppDomain.CurrentDomain.SetupInformation.PrivateBinPath; if (Directory.Exists(binPath)) { AssembliesFromPath(binPath, assemblyFilter); } - - } public void AssembliesFromPath(string path) @@ -460,14 +356,16 @@ public void AssembliesFromPath(string path, Predicate<Assembly> assemblyFilter) { - var assemblyPaths = System.IO.Directory.GetFiles(path).Where(file => - System.IO.Path.GetExtension(file).Equals( - ".exe", StringComparison.OrdinalIgnoreCase) - || - System.IO.Path.GetExtension(file).Equals( - ".dll", StringComparison.OrdinalIgnoreCase)); + IEnumerable<string> assemblyPaths = Directory.GetFiles(path).Where(file => + Path.GetExtension(file).Equals( + ".exe", + StringComparison.OrdinalIgnoreCase) + || + Path.GetExtension(file).Equals( + ".dll", + StringComparison.OrdinalIgnoreCase)); - foreach (var assemblyPath in assemblyPaths) + foreach (string assemblyPath in assemblyPaths) { ... [truncated message content] |