Exemple #1
0
        /// <summary>
        /// Returns the list of key properties defined on <paramref name="type"/>; null if <paramref name="type"/> is complex.
        /// </summary>
        /// <param name="type">Type in question.</param>
        /// <param name="hasProperties">true if <paramref name="type"/> has any (declared or inherited) properties; otherwise false.</param>
        /// <returns>Returns the list of key properties defined on <paramref name="type"/>; null if <paramref name="type"/> is complex.</returns>
        internal static PropertyInfo[] GetKeyPropertiesOnType(Type type, out bool hasProperties)
        {
            ODataTypeInfo typeInfo = GetODataTypeInfo(type);

            hasProperties = typeInfo.HasProperties;
            return(typeInfo.KeyProperties);
        }
Exemple #2
0
        /// <summary>
        /// Gets the clr name according to server defined name in the specified <paramref name="t"/>.
        /// </summary>
        /// <param name="t">Member to get clr name for.</param>
        /// <param name="serverDefinedName">name from server.</param>
        /// <returns>Client clr name.</returns>
        internal static string GetClientFieldName(Type t, string serverDefinedName)
        {
            ODataTypeInfo typeInfo = GetODataTypeInfo(t);

            List <string> serverDefinedNames = serverDefinedName.Split(',').Select(name => name.Trim()).ToList();
            List <string> clientMemberNames  = new List <string>();

            foreach (var serverSideName in serverDefinedNames)
            {
                string memberInfoName = typeInfo.GetClientFieldName(serverSideName);

                clientMemberNames.Add(memberInfoName);
            }

            return(string.Join(",", clientMemberNames));
        }
Exemple #3
0
        /// <summary>Returns the list of properties defined on <paramref name="type"/>.</summary>
        /// <param name="type">Type instance in question.</param>
        /// <param name="declaredOnly">True to to get the properties declared on <paramref name="type"/>; false to get all properties defined on <paramref name="type"/>.</param>
        /// <returns>Returns the list of properties defined on <paramref name="type"/>.</returns>
        internal static IEnumerable <PropertyInfo> GetPropertiesOnType(Type type, bool declaredOnly)
        {
            if (!PrimitiveType.IsKnownType(type))
            {
                ODataTypeInfo typeInfo = GetODataTypeInfo(type);
                foreach (PropertyInfo propertyInfo in typeInfo.Properties)
                {
                    if (declaredOnly && IsOverride(type, propertyInfo))
                    {
                        continue;
                    }

                    yield return(propertyInfo);
                }
            }
        }
Exemple #4
0
        /// <summary>
        /// Gets the clr name according to server defined name in the specified <paramref name="t"/>.
        /// </summary>
        /// <param name="t">The type used to get the client PropertyInfo.</param>
        /// <param name="serverDefinedName">Name from server.</param>
        /// <param name="undeclaredPropertyBehavior">Flag to support untyped properties.</param>
        /// <returns>Client PropertyInfo, or null if the method is not found or throws exception if undeclaredPropertyBehavior is ThrowException.</returns>
        internal static PropertyInfo GetClientPropertyInfo(Type t, string serverDefinedName, UndeclaredPropertyBehavior undeclaredPropertyBehavior)
        {
            ODataTypeInfo typeInfo = GetODataTypeInfo(t);

            return(typeInfo.GetClientPropertyInfo(serverDefinedName, undeclaredPropertyBehavior));
        }
Exemple #5
0
        /// <summary>Gets the full server defined type name in <see cref="OriginalNameAttribute"/> of the specified <paramref name="type"/>.</summary>
        /// <param name="type">Member to get server defined name of.</param>
        /// <returns>The server defined type full name.</returns>
        internal static string GetServerDefinedTypeFullName(Type type)
        {
            ODataTypeInfo typeInfo = GetODataTypeInfo(type);

            return(typeInfo.ServerDefinedTypeFullName);
        }