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()); }
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); }
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); }
private static void WriteCache(String fileName, DynamicProxyLoader factory) { var proxyCache = CommonObjectCache.InitObject(ProxyCacheKey, ConcurrencyHelper.CreateDictionary <String, DynamicProxyLoader>); var hashCode = fileName.ComputeMd5(); proxyCache[hashCode] = factory; }