/// <summary> /// Creates a list of Association fields for all the properties that use NakedObjects. /// </summary> private IEnumerable <IAssociationSpecImmutable> CreateRefPropertySpecs(IEnumerable <PropertyInfo> foundProperties, IObjectSpecImmutable spec) { var specs = new List <IAssociationSpecImmutable>(); foreach (PropertyInfo property in foundProperties) { Log.DebugFormat("Identified 1-1 association method {0}", property); Log.DebugFormat("One-to-One association {0} -> {1}", property.Name, property); // create a reference property spec var identifier = new IdentifierImpl(metamodel, FullName, property.Name); Type propertyType = property.PropertyType; IObjectSpecBuilder propertySpec = reflector.LoadSpecification(propertyType); var referenceProperty = new OneToOneAssociationSpecImmutable(identifier, spec, propertySpec); // Process facets for the property FacetFactorySet.Process(reflector, property, new IntrospectorMethodRemover(methods), referenceProperty, FeatureType.Property); specs.Add(referenceProperty); } return(specs); }
private static void Process(ISpecification holder) { var facets = new List <IFacet>(); if (holder is MemberSpecImmutable) { facets.Add(new NamedFacetNone(holder)); facets.Add(new DescribedAsFacetNone(holder)); } if (holder is AssociationSpecImmutable) { facets.Add(new ImmutableFacetNever(holder)); facets.Add(new PropertyDefaultFacetNone(holder)); facets.Add(new PropertyValidateFacetNone(holder)); } var immutable = holder as OneToOneAssociationSpecImmutable; if (immutable != null) { OneToOneAssociationSpecImmutable association = immutable; facets.Add(new MaxLengthFacetZero(holder)); DefaultTypicalLength(facets, association.ReturnSpec, immutable); facets.Add(new MultiLineFacetNone(holder)); } if (holder is ActionSpecImmutable) { facets.Add(new ExecutedFacetDefault(holder)); facets.Add(new ActionDefaultsFacetNone(holder)); facets.Add(new ActionChoicesFacetNone(holder)); facets.Add(new PageSizeFacetDefault(holder)); } FacetUtils.AddFacets(facets); }