public AssemblyGeneratorBase( string nameSpace, ModuleBuilder moduleBuilder, DCTypeStore dCTypeStore) { nameSpacePrefix = nameSpace + "."; this.moduleBuilder = moduleBuilder; this.dCTypeStore = dCTypeStore; }
public AssemblyGenerator( ModuleBuilder moduleBuilder, DCTypeStore dCTypeStore, string rootNamespace, Assembly baseAssembly, string baseNamespace) : base(rootNamespace, moduleBuilder, dCTypeStore) { this.baseAssembly = baseAssembly; _BaseNamespace = baseNamespace; }
private void GenerateServices() { var assemblyName = new AssemblyName("Camstar.ApiService"); DCTypeStore dCTypeStore = new DCTypeStore(); var assemblyBuilder = DefineDynamicAssembly(assemblyName, "ApiBin", "1.0.0.0"); var moduleBuilder = assemblyBuilder.DefineDynamicModule(assemblyName.Name + Constants.File.DllFileExt, assemblyName.Name + Constants.File.DllFileExt, false); var assemblyGenerator = new AssemblyGenerator(moduleBuilder, dCTypeStore, "Camstar.WCF.Service", typeof(Camstar.WCF.Service.ServiceBase).Assembly, "Camstar.WCF.Service"); assemblyGenerator.GenerateCommonTypes(); ServiceGenerator serviceGenerator = new ServiceGenerator(moduleBuilder, dCTypeStore, "Camstar.WCF.Service"); foreach (DCType dcType in this._dcTypes) { assemblyGenerator.AddDC(dcType); } for (var current = 0; current < this._dcTypes.Count; ++current) { this.OnStateChanged(GeneratingPhase.DataContract, current, this._dcTypes.Count, this._dcTypes[current].Name); serviceGenerator.AddDC(this._dcTypes[current]); } for (var current = 0; current < this._ExposedServices.Count; ++current) { this.OnStateChanged(GeneratingPhase.ServiceContract, current, this._ExposedServices.Count, this._ExposedServices[current].Name); serviceGenerator.AddService(this._ExposedServices[current]); if (this._ExposedServices[current].ExposedState != ExposedServiceStateType.Base) { ++this._GeneratedServicesCount; } } assemblyBuilder.Save(assemblyName.Name + Constants.File.DllFileExt); }
private void GenerationProcess() { this._StartTime = DateTime.Now; this._GeneratedServicesCount = 0; this.CollectInformation(); CreateDirectories(); this._dcTypes = this._TypeChache.GetSortedDCTypes(); var task1 = Task.Factory.StartNew(GenerateServices); var task2 = Task.Factory.StartNew(this.GenerateClient); var assemblyName1 = new AssemblyName("Camstar.WCFSilverlightService"); if (this._Settings.IsGenerateSilverlight) { DCTypeStore dCTypeStore = new DCTypeStore(); new AssemblyGenerator( DefineDynamicAssembly(assemblyName1, this._Settings.ClientOutputDirectory, typeof(Camstar.WCF.Service.ServiceBase).Assembly.GetName().Version.ToString()) .DefineDynamicModule(assemblyName1.Name + Constants.File.DllFileExt, assemblyName1.Name + Constants.File.DllFileExt, false), dCTypeStore, "Camstar.WCF.Service", typeof(Camstar.WCF.Service.ServiceBase).Assembly, "Camstar.WCF.Service").GenerateCommonTypes(); } var assemblyName2 = new AssemblyName("Camstar.WCFSilverlightClient"); var now = DateTime.Now; var generationTime = TimeSpan.MinValue; var num = 0; var disassembleProcess = (Process)null; List <DCType> dcTypeList = new List <DCType>(); if (this._Settings.IsGenerateSilverlight) { this.CollectSilverlightInformation(); DCTypeStore dCTypeStore = new DCTypeStore(); var assemblyBuilder = DefineDynamicAssembly(assemblyName2, this._Settings.ClientSilverlightOutputDirectory, typeof(WCFServiceBase).Assembly.GetName().Version.ToString()); var moduleBuilder = assemblyBuilder.DefineDynamicModule(assemblyName2.Name + Constants.File.DllFileExt, assemblyName2.Name + Constants.File.DllFileExt, false); var assemblyGenerator = new AssemblyGenerator(moduleBuilder, dCTypeStore, "Camstar.WCF.ObjectStack", typeof(WCFServiceBase).Assembly, "Camstar.WCF.Services"); assemblyGenerator.GenerateCommonTypes(); ClientGenerator clientGenerator = new ClientGenerator(moduleBuilder, dCTypeStore, "Camstar.WCF.Services", "Camstar.WCF.Services", true); dcTypeList = this._TypeSilverlightChache.GetSortedDCTypes(); foreach (DCType dCType in dcTypeList) { assemblyGenerator.AddDC(dCType); } for (var current = 0; current < dcTypeList.Count; ++current) { this.OnStateChanged(GeneratingPhase.SilverlightDataContract, current, dcTypeList.Count, dcTypeList[current].Name); clientGenerator.AddDC(dcTypeList[current]); } for (var current = 0; current < this._ExposedSilverlightServices.Count; ++current) { this.OnStateChanged(GeneratingPhase.SilverlightServiceContract, current, this._ExposedSilverlightServices.Count, this._ExposedSilverlightServices[current].Name); clientGenerator.AddService(this._ExposedSilverlightServices[current]); if (this._ExposedSilverlightServices[current].ExposedState != ExposedServiceStateType.Base) { ++num; } } assemblyBuilder.Save(assemblyName2.Name + Constants.File.DllFileExt); disassembleProcess = this.Disassemble(this._Settings.ClientSilverlightOutputDirectory + "\\", assemblyName2.Name); generationTime = DateTime.Now - now; } Task.WaitAll(task1, task2); this.WriteServicesConfiguration(); this.WriteClientConfiguration(); if (this._Settings.IsGenerateSilverlight) { this.AssembleSilverlight(disassembleProcess, this._Settings.ClientSilverlightOutputDirectory + "\\", assemblyName2.Name); } this.DisperseFiles(); this._CompleteInformation = new CompleteInformation(this._dcTypes.Count, this._GeneratedServicesCount + 3, DateTime.Now - this._StartTime); if (!this._Settings.IsGenerateSilverlight) { return; } this._CompleteInformation.SilverlightCompleteInformation = new CompleteInformation(dcTypeList.Count, num + 3, generationTime); }