Exemplo n.º 1
0
        public static SchemaBuilderScope BuildSchema(this SchemaBuilderScope scope, ProtoBuf.Meta.ProtoSyntax sintax = ProtoBuf.Meta.ProtoSyntax.Proto2)
        {
            ISchemaRender      render  = new ProtobuffSchemaRender(sintax);
            ProtoSchemaBuilder builder = new ProtoSchemaBuilder(render);
            string             schema  = builder.BuildSchema(scope.Types);

            scope.Schema = schema;
            return(scope);
        }
Exemplo n.º 2
0
        public static SchemaBuilderScope FetchTypes(this SchemaBuilderScope scope, Assembly assembly, Func <Type, bool> predicate)
        {
            List <Type> types = new List <Type>();

            types.AddRange(assembly.DefinedTypes.Where(predicate));

            scope.Types = types;

            return(scope);
        }
Exemplo n.º 3
0
        public static async Task WriteSchemaAsync(this SchemaBuilderScope scope, Stream stream)
        {
            if (string.IsNullOrWhiteSpace(scope.Schema))
            {
                return;
            }

            using (var fileStream = new StreamWriter(stream))
            {
                await fileStream.WriteAsync(scope.Schema);

                await fileStream.FlushAsync();
            }
        }
Exemplo n.º 4
0
        public static SchemaBuilderScope FetchTypes(this SchemaBuilderScope scope, string assembliesPath, Func <string, bool> predicate)
        {
            var         assemblyFiles = Directory.GetFiles(assembliesPath).Where(predicate);
            List <Type> types         = new List <Type>();

            foreach (var assemblyFileName in assemblyFiles)
            {
                try
                {
                    var assembly = Assembly.LoadFrom(assemblyFileName);

                    types.AddRange(assembly.DefinedTypes);
                }
                catch (Exception ex)
                {
                }
            }

            scope.Types = types;

            return(scope);
        }
Exemplo n.º 5
0
        public static SchemaBuilderScope AddTypes(this SchemaBuilderScope scope, IEnumerable <Type> types, Func <Type, bool> predicate)
        {
            scope.Types.AddRange(types.Where(predicate));

            return(scope);
        }
Exemplo n.º 6
0
 public static SchemaBuilderScope FetchTypes(this SchemaBuilderScope scope, string assembliesPath)
 {
     return(FetchTypes(scope, assembliesPath, (filename) => true));
 }