private void AddTypeInner(Type t) { if (t.GetInterface("IList") != null) { t = ReflectionX.ElementType(t); } if (TypeProperties.ContainsKey(t.AssemblyQualifiedName)) { return; } var typeDict = new Dictionary <string, string>(); TypeProperties.Add(t.AssemblyQualifiedName, typeDict); foreach (var prop in t.GetPersistedProperties()) { if (typeDict.ContainsKey(prop.Name)) { log.Error("Property " + prop.Name + " repeated on type " + t.FullName); continue; } typeDict.Add(prop.Name, prop.PropertyType.AssemblyQualifiedName); if (!prop.PropertyType.FullName.StartsWith("System.")) { AddTypeInner(prop.PropertyType); } } }