/// <summary> /// Generate metadata from the given Assembly. /// </summary> /// <param name="assembly">Assembly containing entity types</param> /// <param name="descriptor">Descriptor used to evaluate types and resolve metadata</param> /// <returns></returns> public static Metadata Generate(Assembly assembly, EntityDescriptor descriptor) { var builder = new PocoMetadataBuilder(descriptor); var types = GetTypesFromAssembly(assembly); var metadata = builder.BuildMetadata(types); return metadata; }
static void Main(string[] args) { var procname = System.Diagnostics.Process.GetCurrentProcess().ProcessName; Console.WriteLine(procname + ' ' + string.Join(" ", args)); var parser = new CommandLine.Parser(ps => { ps.MutuallyExclusive = true; ps.HelpWriter = Console.Out; }); if (!parser.ParseArguments(args, Options)) { return; } var assemblyName = GetAssemblyName(Options.InputFile); if (!File.Exists(assemblyName)) { Console.WriteLine("The specified file {0} cannot be found", assemblyName); return; } string outfile = GetFilePath(); // TODO: how to get this from the command line? EntityDescriptor descriptor; if (assemblyName.Contains("Northwind")) descriptor = new NorthwindEntityDescriptor(); else descriptor = new EntityDescriptor(); var metadata = Generator.Generate(assemblyName, descriptor); var json = ToJson(metadata); if (outfile != null) { Console.WriteLine("Writing to " + outfile); File.WriteAllText(outfile, json); } else { Console.WriteLine(json); } Console.WriteLine("Done"); }
/// <summary> /// Create an instance using the given EntityDescriptor to resolve metadata /// </summary> /// <param name="describer"></param> public PocoMetadataBuilder(EntityDescriptor describer) { this._describer = describer; }
/// <summary> /// Load the assembly from the given AssemblyName, then call <see cref="Generate(Assembly, EntityDescriptor)"/> /// </summary> /// <param name="assemblyName"></param> /// <param name="descriptor"></param> /// <returns></returns> public static Metadata Generate(AssemblyName assemblyName, EntityDescriptor descriptor) { //Assembly assembly = Assembly.ReflectionOnlyLoad(assemblyName.FullName); Assembly assembly = Assembly.Load(assemblyName.FullName); return Generate(assembly, descriptor); }
/// <summary> /// Load the assembly from the given file, then call <see cref="Generate(Assembly, EntityDescriptor)"/> /// </summary> /// <param name="assemblyFileName"></param> /// <param name="descriptor"></param> /// <returns></returns> public static Metadata Generate(string assemblyFileName, EntityDescriptor descriptor) { //Assembly assembly = Assembly.ReflectionOnlyLoadFrom(assemblyFileName); Assembly assembly = Assembly.LoadFrom(assemblyFileName); return Generate(assembly, descriptor); }