Example #1
0
        public static ServiceModel NewModel(Type compositeType,
                                            Visibility visibility,
                                            MetaInfo metaInfo,
                                            IEnumerable<Type> assemblyConcerns,
                                            IEnumerable<Type> sideEffects,
                                            IList<Type> mixins,
                                            String moduleName,
                                            String identity,
                                            bool instantiateOnStartup)
        {
            PropertyDeclarations propertyDeclarations = new MetaInfoDeclaration();
            var constraintsModel = new ConstraintsModel(compositeType);
            bool immutable = metaInfo.Get<ImmutableAttribute>() != null;
            var propertiesModel = new ServicePropertiesModel(constraintsModel, propertyDeclarations, immutable);
            var stateModel = new ServiceStateModel(propertiesModel);
            var mixinsModel = new MixinsModel(compositeType, mixins);

            var concerns = new List<ConcernDeclaration>();
            ConcernsDeclaration.ConcernDeclarations(assemblyConcerns, concerns);
            ConcernsDeclaration.ConcernDeclarations(compositeType, concerns);
            var concernsModel = new ConcernsDeclaration(concerns);
            var sideEffectsModel = new SideEffectsDeclaration(compositeType, sideEffects);
            var compositeMethodsModel = new CompositeMethodsModel(compositeType, constraintsModel, concernsModel, sideEffectsModel, mixinsModel);
            stateModel.AddStateFor(compositeMethodsModel.Properties, compositeType);

            return new ServiceModel(
                    compositeType, visibility, metaInfo, mixinsModel, stateModel, compositeMethodsModel, moduleName, identity, instantiateOnStartup);
        }
Example #2
0
        public static TransientModel NewModel(Type compositeType,
                                              Visibility visibility,
                                              MetaInfo metaInfo,
                                              PropertyDeclarations propertyDeclarations,
                                              IEnumerable <Type> assemblyConcerns,
                                              IEnumerable <Type> sideEffects, IList <Type> mixins)
        {
            var  constraintsModel = new ConstraintsModel(compositeType);
            bool immutable        = metaInfo.Get <ImmutableAttribute>() != null;
            var  propertiesModel  = new TransientPropertiesModel(constraintsModel, propertyDeclarations, immutable);
            var  stateModel       = new TransientStateModel(propertiesModel);
            var  mixinsModel      = new MixinsModel(compositeType, mixins);

            var concerns = new List <ConcernDeclaration>();

            ConcernsDeclaration.ConcernDeclarations(assemblyConcerns, concerns);
            ConcernsDeclaration.ConcernDeclarations(compositeType, concerns);
            var concernsModel = new ConcernsDeclaration(concerns);

            var sideEffectsModel      = new SideEffectsDeclaration(compositeType, sideEffects);
            var compositeMethodsModel = new CompositeMethodsModel(compositeType, constraintsModel, concernsModel, sideEffectsModel, mixinsModel);

            stateModel.AddStateFor(compositeMethodsModel.Properties, compositeType);

            return(new TransientModel(compositeType, visibility, metaInfo, mixinsModel, stateModel, compositeMethodsModel));
        }
Example #3
0
        public MethodConstraintsModel(MethodInfo method, ConstraintsModel constraintsModel)
        {
            this.method = method;
            this.parameterConstraintModels = null;

            ParameterInfo[] methodParameters = method.GetParameters();

            bool constrained = false;

            foreach (ParameterInfo parameterInfo in methodParameters)
            {
                bool   optional = parameterInfo.HasAttribute <OptionalAttribute>();
                string name     = parameterInfo.Name;

                ValueConstraintsModel parameterConstraintsModel = constraintsModel.ConstraintsFor(parameterInfo, name, optional);
                if (parameterConstraintsModel.IsConstrained)
                {
                    constrained = true;
                }

                if (this.parameterConstraintModels == null)
                {
                    this.parameterConstraintModels = new List <ValueConstraintsModel>();
                }
                this.parameterConstraintModels.Add(parameterConstraintsModel);
            }

            if (!constrained)
            {
                this.parameterConstraintModels = null; // No constraints for this method
            }
        }
        public MethodConstraintsModel(MethodInfo method, ConstraintsModel constraintsModel)
        {
            this.method = method;
            this.parameterConstraintModels = null;

            ParameterInfo[] methodParameters = method.GetParameters();

            bool constrained = false;
            foreach (ParameterInfo parameterInfo in methodParameters)
            {
                bool optional = parameterInfo.HasAttribute<OptionalAttribute>();
                string name = parameterInfo.Name;

                ValueConstraintsModel parameterConstraintsModel = constraintsModel.ConstraintsFor(parameterInfo, name, optional);
                if (parameterConstraintsModel.IsConstrained)
                {
                    constrained = true;
                }

                if (this.parameterConstraintModels == null)
                {
                    this.parameterConstraintModels = new List<ValueConstraintsModel>();
                }
                this.parameterConstraintModels.Add(parameterConstraintsModel);
            }

            if (!constrained)
            {
                this.parameterConstraintModels = null; // No constraints for this method
            }
        }
Example #5
0
        public static ServiceModel NewModel(Type compositeType,
                                            Visibility visibility,
                                            MetaInfo metaInfo,
                                            IEnumerable <Type> assemblyConcerns,
                                            IEnumerable <Type> sideEffects,
                                            IList <Type> mixins,
                                            String moduleName,
                                            String identity,
                                            bool instantiateOnStartup)
        {
            PropertyDeclarations propertyDeclarations = new MetaInfoDeclaration();
            var  constraintsModel = new ConstraintsModel(compositeType);
            bool immutable        = metaInfo.Get <ImmutableAttribute>() != null;
            var  propertiesModel  = new ServicePropertiesModel(constraintsModel, propertyDeclarations, immutable);
            var  stateModel       = new ServiceStateModel(propertiesModel);
            var  mixinsModel      = new MixinsModel(compositeType, mixins);

            var concerns = new List <ConcernDeclaration>();

            ConcernsDeclaration.ConcernDeclarations(assemblyConcerns, concerns);
            ConcernsDeclaration.ConcernDeclarations(compositeType, concerns);
            var concernsModel         = new ConcernsDeclaration(concerns);
            var sideEffectsModel      = new SideEffectsDeclaration(compositeType, sideEffects);
            var compositeMethodsModel = new CompositeMethodsModel(compositeType, constraintsModel, concernsModel, sideEffectsModel, mixinsModel);

            stateModel.AddStateFor(compositeMethodsModel.Properties, compositeType);

            return(new ServiceModel(
                       compositeType, visibility, metaInfo, mixinsModel, stateModel, compositeMethodsModel, moduleName, identity, instantiateOnStartup));
        }
 public CompositeMethodsModel(Type compositeType, ConstraintsModel constraintsModel, ConcernsDeclaration concernsModel, SideEffectsDeclaration sideEffectsModel, AbstractMixinsModel mixinsModel)
 {
     this.methods          = new Dictionary <MethodInfo, CompositeMethodModel>();
     this.properties       = new List <PropertyInfo>();
     this.compositeType    = compositeType;
     this.concernsModel    = concernsModel;
     this.sideEffectsModel = sideEffectsModel;
     this.mixinsModel      = mixinsModel;
     this.constraintsModel = constraintsModel;
     this.BuildMixinsModel(compositeType);
     this.ImplementMixinMethods();
 }
 public CompositeMethodsModel(Type compositeType, ConstraintsModel constraintsModel, ConcernsDeclaration concernsModel, SideEffectsDeclaration sideEffectsModel, AbstractMixinsModel mixinsModel)
 {
     this.methods = new Dictionary<MethodInfo, CompositeMethodModel>();
     this.properties = new List<PropertyInfo>();
     this.compositeType = compositeType;
     this.concernsModel = concernsModel;
     this.sideEffectsModel = sideEffectsModel;
     this.mixinsModel = mixinsModel;
     this.constraintsModel = constraintsModel;
     this.BuildMixinsModel(compositeType);
     this.ImplementMixinMethods();
 }
Example #8
0
        public static ValueModel NewModel(Type compositeType, Visibility visibility, MetaInfo metaInfo, PropertyDeclarations propertyDeclarations, List<Type> assemblyConcerns, List<Type> sideEffects, List<Type> mixins)
        {
            var constraintsModel = new ConstraintsModel(compositeType);
            bool immutable = metaInfo.Get<ImmutableAttribute>() != null;
            var propertiesModel = new ValuePropertiesModel(constraintsModel, propertyDeclarations, immutable);
            var stateModel = new ValueStateModel(propertiesModel);
            var mixinsModel = new MixinsModel(compositeType, mixins);

            var concerns = new List<ConcernDeclaration>();
            ConcernsDeclaration.ConcernDeclarations(assemblyConcerns, concerns);
            ConcernsDeclaration.ConcernDeclarations(compositeType, concerns);
            var concernsModel = new ConcernsDeclaration(concerns);

            var sideEffectsModel = new SideEffectsDeclaration(compositeType, sideEffects);
            var compositeMethodsModel = new CompositeMethodsModel(compositeType, constraintsModel, concernsModel, sideEffectsModel, mixinsModel);
            stateModel.AddStateFor(compositeMethodsModel.Properties, compositeType);

            return new ValueModel(compositeType, visibility, metaInfo, mixinsModel, stateModel, compositeMethodsModel);
        }
 public TransientPropertiesModel(ConstraintsModel constraintsModel, PropertyDeclarations declarations, bool immutable)
         : base(constraintsModel, declarations, immutable)
 {
 }
Example #10
0
 public ValuePropertiesModel(ConstraintsModel constraintsModel, PropertyDeclarations propertyDeclarations, bool immutable)
         : base(constraintsModel, propertyDeclarations, immutable)
 {
 }
 protected AbstractPropertiesModel(ConstraintsModel constraintsModel, PropertyDeclarations propertyDeclarations, bool immutable)
 {
     this.constraintsModel     = constraintsModel;
     this.propertyDeclarations = propertyDeclarations;
     this.immutable            = immutable;
 }
 public TransientPropertiesModel(ConstraintsModel constraintsModel, PropertyDeclarations declarations, bool immutable)
     : base(constraintsModel, declarations, immutable)
 {
 }
 protected AbstractPropertiesModel(ConstraintsModel constraintsModel, PropertyDeclarations propertyDeclarations, bool immutable)
 {
     this.constraintsModel = constraintsModel;
     this.propertyDeclarations = propertyDeclarations;
     this.immutable = immutable;
 }
Example #14
0
 public ValuePropertiesModel(ConstraintsModel constraintsModel, PropertyDeclarations propertyDeclarations, bool immutable)
     : base(constraintsModel, propertyDeclarations, immutable)
 {
 }