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 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)); }
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 } }
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(); }
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) { }
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; }
public ValuePropertiesModel(ConstraintsModel constraintsModel, PropertyDeclarations propertyDeclarations, bool immutable) : base(constraintsModel, propertyDeclarations, immutable) { }