private static EdmClrType GetEdmType(Type type) { var result = new EdmClrType(type); foreach (var prop in type.GetTypeInfo().GetProperties(BindingFlags.Public | BindingFlags.Instance)) { var ptype = Nullable.GetUnderlyingType(prop.PropertyType) ?? prop.PropertyType; if (TypeDescriptor.GetConverter(ptype).CanConvertFrom(typeof(string))) { var edmType = GetPrimitiveEDMType(prop, ptype); if (edmType.HasValue) { result.AddProperty(new EdmClrProperty(result, prop, edmType.Value)); } } else if (!typeof(IEnumerable).GetTypeInfo().IsAssignableFrom(ptype)) { result.AddProperty(new EdmClrProperty(result, prop, new EdmClrType(ptype))); } } return(result); }
public EdmClrProperty(EdmClrType declaringType, PropertyInfo property, EdmPrimitiveTypeKind type) : base(declaringType, property.Name, EdmCoreModel.Instance.GetPrimitive(type, IsNullable(property.PropertyType))) { Property = property; }
public EdmClrProperty(EdmClrType declaringType, PropertyInfo property, EdmClrType type) : base(declaringType, property.Name, new EdmEntityTypeReference(type, IsNullable(property.PropertyType))) { Property = property; }