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