public MethodSideEffectsModel SideEffectsFor(MethodInfo method, Type mixinType) { var methodSideEffectsModels = new List <MethodSideEffectModel>(); var model = new MethodSideEffectsModel(method, methodSideEffectsModels); return(model); }
private void ImplementMixinMethods() { IEnumerable <Type> mixinTypes = this.mixinsModel.GetMixinTypes(); foreach (Type mixinType in mixinTypes) { foreach (MethodInfo method in mixinType.GetMethods()) { MixinModel mixinModel = this.mixinsModel.ImplementMethod(method); MethodConcernsModel methodConcernsModel = this.concernsModel.ConcernsFor(method, mixinType); MethodConcernsModel mixinMethodConcernsModel = mixinModel.ConcernsFor(method, mixinType); methodConcernsModel = methodConcernsModel.CombineWith(mixinMethodConcernsModel); MethodSideEffectsModel methodSideEffectsModel = this.sideEffectsModel.SideEffectsFor(method, mixinType); MethodSideEffectsModel mixinMethodSideEffectsModel = mixinModel.SideEffectsFor(method, mixinType); methodSideEffectsModel = methodSideEffectsModel.CombineWith(mixinMethodSideEffectsModel); var methodConstraintsModel = new MethodConstraintsModel(method, this.constraintsModel); var compositeMethodModel = new CompositeMethodModel(methodConstraintsModel, methodConcernsModel, methodSideEffectsModel, this.mixinsModel); this.methods.Add(method, compositeMethodModel); } foreach (PropertyInfo property in mixinType.GetProperties()) { this.properties.Add(property); } } }
public MethodSideEffectsModel CombineWith(MethodSideEffectsModel that) { var methodSideEffectModels = new List<MethodSideEffectModel>(); methodSideEffectModels.AddRange(this.sideEffectModels); methodSideEffectModels.AddRange(that.sideEffectModels); var newModel = new MethodSideEffectsModel(this.Method, methodSideEffectModels); return newModel; }
public CompositeMethodModel(MethodConstraintsModel methodConstraintsModel, MethodConcernsModel methodConcernsModel, MethodSideEffectsModel methodSideEffectsModel, AbstractMixinsModel mixinsModel) { this.mixins = mixinsModel; this.methodConcerns = methodConcernsModel; this.methodSideEffects = methodSideEffectsModel; this.methodConstraints = methodConstraintsModel; this.methodConstraintsInstance = this.methodConstraints.NewInstance(); }
public MethodSideEffectsModel CombineWith(MethodSideEffectsModel that) { var methodSideEffectModels = new List <MethodSideEffectModel>(); methodSideEffectModels.AddRange(this.sideEffectModels); methodSideEffectModels.AddRange(that.sideEffectModels); var newModel = new MethodSideEffectsModel(this.Method, methodSideEffectModels); return(newModel); }
public CompositeMethodModel(MethodConstraintsModel methodConstraintsModel, MethodConcernsModel methodConcernsModel, MethodSideEffectsModel methodSideEffectsModel, AbstractMixinsModel mixinsModel) { this.mixins = mixinsModel; this.methodConcerns = methodConcernsModel; this.methodSideEffects = methodSideEffectsModel; this.methodConstraints = methodConstraintsModel; this.methodConstraintsInstance = this.methodConstraints.NewInstance(); }
public MethodSideEffectsModel SideEffectsFor(MethodInfo method, Type compositeType) { if (this.methodSideEffects.ContainsKey(method)) { return(this.methodSideEffects[method]); } List <Type> matchingSideEffects = this.MatchingSideEffectClasses(method, compositeType); MethodSideEffectsModel methodConcerns = MethodSideEffectsModel.CreateForMethod(method, matchingSideEffects); this.methodSideEffects.Add(method, methodConcerns); return(methodConcerns); }
public MethodSideEffectsModel SideEffectsFor(MethodInfo method, Type mixinType) { var methodSideEffectsModels = new List<MethodSideEffectModel>(); var model = new MethodSideEffectsModel(method, methodSideEffectsModels); return model; }