예제 #1
0
        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);
        }
예제 #2
0
 private bool IsAnonymousType(Type type)
 {
     return(AnonymousTypeBuilder.IsAnonymousType(type));
 }