Пример #1
0
        private PropertyInstance BuildProperty(IEdmProperty property)
        {
            if (property.Type.IsCollection())
            {
                var type = (IEdmCollectionType)property.Type.Definition;
                if (type.ElementType.IsComplex())
                {
                    var complex = new ComplexInstance(property.Type.FullName(), false).WithTypeAnnotation(type.ElementType.Definition);
                    foreach (var prop in ((IEdmComplexType)type.ElementType.Definition).StructuralProperties())
                    {
                        complex.Add(this.BuildProperty(prop));
                    }

                    return(new ComplexMultiValueProperty(property.Name,
                                                         new ComplexMultiValue(property.Type.FullName(), false, complex)).WithTypeAnnotation(type));
                }

                return(new PrimitiveMultiValueProperty(property.Name,
                                                       new PrimitiveMultiValue(property.Type.FullName(), false,
                                                                               this.GetValue((IEdmPrimitiveTypeReference)type.ElementType))).WithTypeAnnotation(property.Type));
            }

            if (property.IsComplex())
            {
                var complex = new ComplexInstance(property.Type.FullName(), false);
                foreach (var prop in ((IEdmComplexType)property.Type.Definition).StructuralProperties())
                {
                    complex.Add(this.BuildProperty(prop));
                }

                return(new ComplexProperty(property.Name, complex).WithTypeAnnotation(property.Type));
            }

            return(new PrimitiveProperty((property.Name), this.GetValue((IEdmPrimitiveTypeReference)property.Type)).WithTypeAnnotation(property.Type));
        }