public ConflictDetectionResult Process(List<TypeReference> roles)
        {
            if (roles == null) throw new ArgumentNullException("roles");
              Container = new RoleCompositionMemberContainer(_targetType);

              var result = new ConflictDetectionResult();

              roles.ForEach(role => AddRole(role));

              Container.Process();

              result.Slurp(Container);

              return result;
        }
        public RoleComposerResult ComposeRoles(MutationParameters parameters)
        {
            parameters.Validate();
              _targetType = parameters.SourceType;
              if (_targetType == null) throw new ArgumentException("parameters must contain a SourceType", "parameters");

              Tracer.TraceVerbose("Compose class: {0}", _targetType.ToString());

              var result = new RoleComposerResult();

              CheckComposition(result);
              if (!result.Success) { return result; }

              var roles = RetrieveRoles();

              var conflictDetector = new ConflictDetector(_targetType);
              {
            var memberProcessResult = conflictDetector.Process(roles);
            result.AddResult(memberProcessResult);
            if (!memberProcessResult.Success) {
              return result;
            }
              }

              if (_targetType.IsRole()) {
            // roles are not composed
            return result;
              }

              {
            _container = conflictDetector.Container;
            var composeResult = ComposeRoles(roles);
            result.AddResult(composeResult);
            if (!composeResult.Success) {
              return result;
            }
              }

              return result;
        }
Example #3
0
 public RoleComposer(TypeDefinition targetType, IList<TypeReference> roles, RoleCompositionMemberContainer container)
 {
     _targetType = targetType;
       _roles = roles;
       _container = container;
 }
Example #4
0
 public MemberComposer(TypeDefinition targetType, RoleCompositionMemberContainer container)
 {
     TargetType = targetType;
       Container = container;
 }