private Type CreateAnonymousType(Type type) { if (!IsAnonymousType(type)) { return(type); } var properties = type.GetProperties(); var newType = AnonymousTypeBuilder.CreateAnonymousType(properties .Select(p => p.PropertyType) .Select(CreateAnonymousType) .ToArray(), properties.Select(p => p.Name).ToArray(), module); var newProperties = newType.GetProperties(BindingFlags.Public | BindingFlags.Instance) .ToDictionary(property => property.Name); typeCache[type] = newType; propertiesCache[newType] = newProperties; return(newType); }
private bool IsAnonymousType(Type type) { return(AnonymousTypeBuilder.IsAnonymousType(type)); }