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; }
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); }
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; }
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); }
public bool CanHandle(Type plainNetType, out OpenTypeKind mapsTo, CanHandleDelegate canHandleNestedTypeCallback) { mapsTo = OpenTypeKind.SimpleType; return(plainNetType.IsEnum); }
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; }