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; }
public RoleComposer(TypeDefinition targetType, IList<TypeReference> roles, RoleCompositionMemberContainer container) { _targetType = targetType; _roles = roles; _container = container; }
public MemberComposer(TypeDefinition targetType, RoleCompositionMemberContainer container) { TargetType = targetType; Container = container; }