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 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); }