public AssemblyGeneratorBase(
     string nameSpace,
     ModuleBuilder moduleBuilder,
     DCTypeStore dCTypeStore)
 {
     nameSpacePrefix    = nameSpace + ".";
     this.moduleBuilder = moduleBuilder;
     this.dCTypeStore   = dCTypeStore;
 }
Example #2
0
 public AssemblyGenerator(
     ModuleBuilder moduleBuilder,
     DCTypeStore dCTypeStore,
     string rootNamespace,
     Assembly baseAssembly,
     string baseNamespace)
     : base(rootNamespace, moduleBuilder, dCTypeStore)
 {
     this.baseAssembly = baseAssembly;
     _BaseNamespace    = baseNamespace;
 }
Example #3
0
        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);
        }
Example #4
0
        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);
        }