private ClassMetaData BuildClass(IDictionary <Type, ClassMetaData> map, Type type) { if (type == typeof(object)) { return(null); } //Already in map, just return if (map.TryGetValue(type, out var value)) { return(value); } var parent = BuildClass(map, type.BaseType); var data = new ClassMetaData(type, parent); map.Add(type, data); return(data); }
public ClassMetaData(Type type, ClassMetaData parent) { Type = type ?? throw new ArgumentNullException(nameof(type)); Parent = parent; }