Exemple #1
0
        public override string ToString()
        {
            var stringBuilder = new StringBuilder();

            stringBuilder.AppendLine(base.ToString());

            if (MetadataImportErrors != null)
            {
                stringBuilder.AppendLine("Metadata Import Errors:");
                stringBuilder.AppendLine(DynamicProxyLoader.ToString(MetadataImportErrors));
            }

            if (CodeGenerationErrors != null)
            {
                stringBuilder.AppendLine("Code Generation Errors:");
                stringBuilder.AppendLine(DynamicProxyLoader.ToString(CodeGenerationErrors));
            }

            if (CompilationErrors != null)
            {
                stringBuilder.AppendLine("Compilation Errors:");
                stringBuilder.AppendLine(DynamicProxyLoader.ToString(CompilationErrors));
            }

            return(stringBuilder.ToString());
        }
Exemple #2
0
        public static void Save(String fileName, DynamicProxyLoader factory)
        {
            var svcFileName   = Path.GetFileName(fileName);
            var svcFolderPath = Path.GetDirectoryName(fileName);

            if (String.IsNullOrWhiteSpace(svcFileName) || String.IsNullOrWhiteSpace(svcFolderPath))
            {
                throw new Exception("Invalid folder or file path");
            }

            if (!Directory.Exists(svcFolderPath))
            {
                Directory.CreateDirectory(svcFolderPath);
            }

            WriteCache(fileName, factory);

            var proxyClientFileName   = $"{svcFileName}.config";
            var proxyAssemblyFileName = $"{fileName}.dll";
            var proxyCodeFileName     = $"{fileName}.cs";

            factory.DiscoveryClient.WriteAll(svcFolderPath, proxyClientFileName);

            File.WriteAllBytes(proxyAssemblyFileName, factory.AssemblyBytes);
            File.WriteAllText(proxyCodeFileName, factory.AssemblyCode);
        }
Exemple #3
0
        public static DynamicProxyLoader Load(String fileName, String @namespace, DynamicProxyLoaderOptions options)
        {
            @namespace = (@namespace ?? "Hmis_Service_Ref");
            options    = (options ?? new DynamicProxyLoaderOptions());

            var dynamicProxyFactory = ReadCache(fileName);

            if (dynamicProxyFactory != null)
            {
                return(dynamicProxyFactory);
            }

            var proxyClientFileName   = String.Format("{0}.config", fileName);
            var proxyAssemblyFileName = String.Format("{0}.dll", fileName);
            var proxyCodeFileName     = String.Format("{0}.cs", fileName);

            var discoveryClient = new DiscoveryClientProtocol();

            discoveryClient.ReadAll(proxyClientFileName);

            var proxyAssemblyBytes = File.ReadAllBytes(proxyAssemblyFileName);
            var proxyAssemblyCode  = File.ReadAllText(proxyCodeFileName);
            var proxyAssembly      = Assembly.Load(proxyAssemblyBytes);

            dynamicProxyFactory = new DynamicProxyLoader(discoveryClient, proxyAssembly, proxyAssemblyBytes, proxyAssemblyCode, @namespace, options);

            WriteCache(fileName, dynamicProxyFactory);

            return(dynamicProxyFactory);
        }
Exemple #4
0
        private static void WriteCache(String fileName, DynamicProxyLoader factory)
        {
            var proxyCache = CommonObjectCache.InitObject(ProxyCacheKey, ConcurrencyHelper.CreateDictionary <String, DynamicProxyLoader>);
            var hashCode   = fileName.ComputeMd5();

            proxyCache[hashCode] = factory;
        }