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);
        }
Пример #2
0
 public EdmClrProperty(EdmClrType declaringType, PropertyInfo property, EdmPrimitiveTypeKind type)
     : base(declaringType, property.Name, EdmCoreModel.Instance.GetPrimitive(type, IsNullable(property.PropertyType)))
 {
     Property = property;
 }
Пример #3
0
 public EdmClrProperty(EdmClrType declaringType, PropertyInfo property, EdmClrType type)
     : base(declaringType, property.Name, new EdmEntityTypeReference(type, IsNullable(property.PropertyType)))
 {
     Property = property;
 }