public static Common.EntitiesModel.Entity[] Read(Compilation compilation) { var result = new List<Common.EntitiesModel.Entity>(); var markAttribute = compilation.GetTypeByMetadataName("Generators.Common.ModelSourceAttribute"); var visitor = new MarkedTypeVisitor(markAttribute); visitor.Visit(compilation.GlobalNamespace); foreach (var type in visitor.FoundSymbols) { var properties = type.GetMembers() .OfType<IPropertySymbol>() .Select(p => new Common.EntitiesModel.EntityProperty { Name = p.Name, DataType = p.Type.ToModelDataType() }); var entity = new Common.EntitiesModel.Entity { Name = type.Name, Properties = properties.ToArray() }; result.Add(entity); } return result.ToArray(); }
public static Common.EntitiesModel.Entity[] Read(params Assembly[] assemblies) { var result = new List <Common.EntitiesModel.Entity>(); foreach (var assembly in assemblies) { var markedTypes = assembly .ExportedTypes .Where(t => t.GetCustomAttribute <ModelSourceAttribute>() != null); foreach (var type in markedTypes) { var properties = type .GetProperties(BindingFlags.Instance | BindingFlags.Public) .Select(p => new Common.EntitiesModel.EntityProperty { Name = p.Name, DataType = p.PropertyType.ToModelDataType() }); var entity = new Common.EntitiesModel.Entity { Name = type.Name, Properties = properties.ToArray() }; result.Add(entity); } } return(result.ToArray()); }