예제 #1
0
 /// <summary>
 /// Looks for the proxy type from a user type
 /// </summary>
 /// <param name="userType">The user type to check for</param>
 /// <returns>The proxy type for the <paramref name="userType"/> if it exists</returns>
 /// <remarks></remarks>
 private static Type GetProxyTypeFromUserType(Type userType)
 {
     if (userType.IsCollection())
     {
         CollectionProxies.TryGetValue(userType.GetCollectionUnderType(), out var collection);
         return(collection.ProxyCollectionType);
     }
     else
     {
         Proxies.TryGetValue(userType, out var proxy);
         return(proxy.ProxyType);
     }
 }
예제 #2
0
 /// <summary>
 /// Looks for the property of the <paramref name="userType"/> that match the <paramref name="proxyPropertyType"/>
 /// </summary>
 /// <param name="userType">The <see cref="Type"/> that declares the property</param>
 /// <param name="proxyPropertyType">The <see cref="Type"/> of the property to look for</param>
 /// <param name="propertyName">The name of the property in the <paramref name="userType"/></param>
 /// <returns>The <see cref="PropertyInfo"/> for the property if exists otherwise null</returns>
 private static PropertyInfo GetUserPropertyFromProxyPropertyType(Type userType, Type proxyPropertyType,
                                                                  string propertyName)
 {
     if (proxyPropertyType.IsCollection())
     {
         return(CollectionProxies
                .Where(c => c.Value.ProxyCollectionType == proxyPropertyType)
                .Select(c => userType.GetProperty(propertyName, c.Key.MakeArrayType()))
                .FirstOrDefault(prop => prop != null));
     }
     else
     {
         return(Proxies
                .Where(c => c.Value.ProxyType == proxyPropertyType)
                .Select(c => userType.GetProperty(propertyName, c.Key))
                .FirstOrDefault(prop => prop != null));
     }
 }
예제 #3
0
 /// <summary>
 /// Gets the first collection proxy type registered to the <paramref name="udtCollectionName"/>
 /// </summary>
 /// <param name="udtCollectionName">The udt collection name to look for</param>
 /// <returns>The first collection registered with that name or the default value otherwise</returns>
 private static (Type ProxyType, string UDTCollectionName) GetCollectionProxyTypeFromUdtName(string udtCollectionName)
 {
     return(CollectionProxies.Where(c => c.Value.UdtCollectionName == udtCollectionName)
            .Select(c => c.Value)
            .FirstOrDefault());
 }