/// <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); }
/// <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)); }
/// <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); } } }
/// <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)); }
/// <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); }