예제 #1
0
 private IOperationResult ComposeMemberGroups()
 {
     var result = new CompositeOperationResult();
       var roleMemberGroups = _container.RetrieveMemberGroups();
       var memberComposer = new MemberComposer(_targetType, _container);
       roleMemberGroups.ForEach(group => memberComposer.Compose(group));
       result.Slurp(memberComposer);
       return result;
 }
예제 #2
0
 private IOperationResult Mutate(IMutator[] mutators, MutationParameters parameters)
 {
     var compositeResult = new CompositeOperationResult();
       foreach (var mutator in mutators) {
     var result = mutator.Mutate(parameters);
     compositeResult.AddResult(result);
       }
       return compositeResult;
 }
예제 #3
0
        public IOperationResult Compose()
        {
            var result = new CompositeOperationResult();

              AddRoleInterfaces();

              {
            var composeMemberGroupsResult = ComposeMemberGroups();
            result.AddResult(composeMemberGroupsResult);
            if (!result.Success) return result;
              }

              WeaveInitializationCode();

              return result;
        }
 public IOperationResult Mutate(MutationParameters parameters)
 {
     parameters.Validate();
       var assembly = parameters.Assembly;
       var result = new CompositeOperationResult();
       assembly.MainModule.GetAllTypes(). // TODO: what about other modules?
     Where(type => DoesRoles(type)).
     // TODO: do we need a special order here? like base classes first?
     ForEach(type => {
       var singleResult = new RoleComposerMutator().ComposeRoles(
     new MutationParameters {
       SourceType = type,
       Context = parameters.Context
     });
       result.AddResult(singleResult);
     });
       return result;
 }
        public IOperationResult Morph(MutationParameters parameters)
        {
            if (parameters.SourceType != null) return MorphType(parameters);

              parameters.Validate();
              var assembly = parameters.Assembly;
              var result = new CompositeOperationResult();
              assembly.MainModule.GetAllTypes().
            Where(type => type.IsRole() && !type.IsRoleView()).
            ForEach(role => {
              var singleResult = MorphType(
            new MutationParameters {
              SourceType = role,
              Context = parameters.Context
            }
              );
              result.AddResult(singleResult);
            });
              return result;
        }