Beispiel #1
0
        private SchemaPropertyEntry GenerateForProperty(PropertyMapping propertyInfo)
        {
            var propType = propertyInfo.PropertyType;

            var propEntry = new SchemaPropertyEntry
            {
                Required = propertyInfo.IsRequiredForConstructor,
                Access = propertyInfo.AccessMode,
                Name = propertyInfo.Name,
                Type = propType.GetSchemaTypeName()
            };

            var enumerablePropType = propType as EnumerableTypeSpec;
            if (enumerablePropType != null)
            {
                propEntry.Items = new List<SchemaArrayItem>
                {
                    new SchemaArrayItem
                    {
                        Type = enumerablePropType.ItemType.GetSchemaTypeName(),
                        Access = propertyInfo.ItemAccessMode
                    }
                };
            }

            var dictPropType = propType as DictionaryTypeSpec;
            if (dictPropType != null && propEntry.Type == "dictionary")
            {
                propEntry.Items = new List<SchemaArrayItem>()
                {
                    new SchemaArrayItem()
                    {
                        Type = dictPropType.ValueType.GetSchemaTypeName(),
                        Access = propertyInfo.ItemAccessMode
                    }
                };
            }

            return propEntry;
        }
Beispiel #2
0
 private TypeReference GetPropertyTypeReference(PropertyMapping prop)
 {
     TypeReference propTypeRef;
     if (prop.ExposedAsRepository)
     {
         var propType = prop.PropertyType as EnumerableTypeSpec;
         if (propType == null)
             throw new InvalidOperationException("Can only expose an enumerable type as repository.");
         var resourceInfo = this.clientTypeInfoDict[propType.ItemType];
         return resourceInfo.CustomRepositoryInterface;
     }
     else
         propTypeRef = GetTypeReference(prop.PropertyType);
     return propTypeRef;
 }
 public abstract ExportedPropertyDetails LoadExportedPropertyDetails(PropertyMapping propertyMapping);