コード例 #1
0
        public MethodSideEffectsModel SideEffectsFor(MethodInfo method, Type mixinType)
        {
            var methodSideEffectsModels = new List <MethodSideEffectModel>();
            var model = new MethodSideEffectsModel(method, methodSideEffectsModels);

            return(model);
        }
コード例 #2
0
        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);
                }
            }
        }
コード例 #3
0
        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;
        }
コード例 #4
0
 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();
 }
コード例 #5
0
        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);
        }
コード例 #6
0
 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();
 }
コード例 #7
0
        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);
        }
コード例 #8
0
ファイル: MixinModel.cs プロジェクト: attila3453/alsing
 public MethodSideEffectsModel SideEffectsFor(MethodInfo method, Type mixinType)
 {
     var methodSideEffectsModels = new List<MethodSideEffectModel>();
     var model = new MethodSideEffectsModel(method, methodSideEffectsModels);
     return model;
 }