public bool CanHandle(Type plainNetType, out OpenTypeKind mapsTo, CanHandleDelegate canHandleNestedTypeCallback)
 {
     mapsTo = OpenTypeKind.CompositeType;
      foreach (PropertyInfo propertyInfo in plainNetType.GetProperties(BindingFlags.Public | BindingFlags.Instance))
      {
     if (propertyInfo.CanRead && propertyInfo.GetIndexParameters().Length == 0)
     {
        OpenTypeKind featureMapsTo;
        if (!canHandleNestedTypeCallback(propertyInfo.PropertyType, out featureMapsTo))
        {
           return false;
        }
     }
      }
      return true;
 }
Example #2
0
 public bool CanHandle(Type plainNetType, out OpenTypeKind mapsTo, CanHandleDelegate canHandleNestedTypeCallback)
 {
     mapsTo = OpenTypeKind.CompositeType;
     foreach (PropertyInfo propertyInfo in plainNetType.GetProperties(BindingFlags.Public | BindingFlags.Instance))
     {
         if (propertyInfo.CanRead && propertyInfo.GetIndexParameters().Length == 0)
         {
             OpenTypeKind featureMapsTo;
             if (!canHandleNestedTypeCallback(propertyInfo.PropertyType, out featureMapsTo))
             {
                 return(false);
             }
         }
     }
     return(true);
 }
Example #3
0
 public bool CanHandle(Type plainNetType, out OpenTypeKind mapsTo, CanHandleDelegate canHandleNestedTypeCallback)
 {
     mapsTo = OpenTypeKind.ArrayType;
     if (plainNetType.IsGenericType)
     {
         Type genericDef = plainNetType.GetGenericTypeDefinition();
         if (Array.Exists(_supportedCollectionTypes, delegate(Type t)
         {
             return(t == genericDef);
         }))
         {
             Type elementType = plainNetType.GetGenericArguments()[0];
             return(CanHandleElementType(elementType, out mapsTo, canHandleNestedTypeCallback));
         }
     }
     else if (plainNetType.IsArray && plainNetType.GetArrayRank() == 1)
     {
         return(CanHandleElementType(plainNetType.GetElementType(), out mapsTo, canHandleNestedTypeCallback));
     }
     return(false);
 }
 public bool CanHandle(Type plainNetType, out OpenTypeKind mapsTo, CanHandleDelegate canHandleNestedTypeCallback)
 {
     mapsTo = OpenTypeKind.ArrayType;
      if (plainNetType.IsGenericType)
      {
     Type genericDef = plainNetType.GetGenericTypeDefinition();
     if (Array.Exists(_supportedCollectionTypes, delegate(Type t)
                                                    {
                                                       return t == genericDef;
                                                    }))
     {
        Type elementType = plainNetType.GetGenericArguments()[0];
        return CanHandleElementType(elementType, out mapsTo, canHandleNestedTypeCallback);
     }
      }
      else if (plainNetType.IsArray && plainNetType.GetArrayRank() == 1)
      {
     return CanHandleElementType(plainNetType.GetElementType(), out mapsTo, canHandleNestedTypeCallback);
      }
      return false;
 }
Example #5
0
        private static bool CanHandleElementType(Type elementType, out OpenTypeKind mapsTo, CanHandleDelegate canHandleNestedTypeCallback)
        {
            mapsTo = OpenTypeKind.ArrayType;
            OpenTypeKind elementMapsTo;

            if (canHandleNestedTypeCallback(elementType, out elementMapsTo))
            {
                mapsTo = ResolveMappedTypeKind(elementType);
                return((mapsTo == OpenTypeKind.ArrayType && elementMapsTo == OpenTypeKind.SimpleType) ||
                       (mapsTo == OpenTypeKind.TabularType && elementMapsTo == OpenTypeKind.CompositeType));
            }
            return(false);
        }
Example #6
0
 public bool CanHandle(Type plainNetType, out OpenTypeKind mapsTo, CanHandleDelegate canHandleNestedTypeCallback)
 {
     mapsTo = OpenTypeKind.SimpleType;
     return(plainNetType.IsEnum);
 }
Example #7
0
 public bool CanHandle(Type plainNetType, out OpenTypeKind mapsTo, CanHandleDelegate canHandleNestedTypeCallback)
 {
     mapsTo = OpenTypeKind.SimpleType;
      return SimpleType.IsSimpleType(plainNetType);
 }
 private static bool CanHandleElementType(Type elementType, out OpenTypeKind mapsTo, CanHandleDelegate canHandleNestedTypeCallback)
 {
     mapsTo = OpenTypeKind.ArrayType;
      OpenTypeKind elementMapsTo;
      if (canHandleNestedTypeCallback(elementType, out elementMapsTo))
      {
     mapsTo = ResolveMappedTypeKind(elementType);
     return (mapsTo == OpenTypeKind.ArrayType && elementMapsTo == OpenTypeKind.SimpleType) ||
            (mapsTo == OpenTypeKind.TabularType && elementMapsTo == OpenTypeKind.CompositeType);
      }
      return false;
 }