/// <summary> /// 创建代码 /// </summary> /// <remarks> /// 这里需要输出3组文件 /// 1.客户端接口 /// 2.代理类 /// 3.代理类和接口的绑定 /// </remarks> /// <param name="dllFile"></param> /// <param name="outFolder">输出目录</param> /// <param name="nameSpace">基础的命名空间</param> public static void CreateCode(string dllFile, string outFolder, string nameSpace) { StringBuilder interfaceCode = new StringBuilder(); var dll = Assembly.LoadFrom(dllFile); StringBuilder proxyregBuilder = new StringBuilder(); foreach (var type in dll.GetTypes()) { if (type.IsInterface) { var i = type.GetCustomAttributes(typeof(ClientInterfaceAttribute), true); if (i.Length > 0) { // 将接口代码的代码重新复制过去 var code = new CreateInterfaceCode(type).CreateCode(); interfaceCode.Append(code); // 生成客户端解包代码并写入对应文件 code = new CreateReadCode(type).CreateCode(); string typeName = Utils.GetFixInterfaceName(type.Name); var context = FileCodeBase .Replace("#code#", code) .Replace("#namespace#", nameSpace) .Replace("#ClassName#", typeName) .Replace("`", "\""); string fileName = Path.Combine(outFolder, string.Format(@"Controller\{0}\{0}Controller.Net.cs", typeName)); var fi = new FileInfo(fileName); if (!fi.Directory.Exists) { fi.Directory.Create(); } File.WriteAllText(fileName, context, Encoding.UTF8); } } } var fileContext = InterfaceCodeBase .Replace("#code#", interfaceCode.ToString()) .Replace("#namespace#", nameSpace) .Replace("`", "\""); var file = Path.Combine(outFolder, @"Controller\Auto\LogicInterface.cs"); new FileInfo(file).Directory.Create(); File.WriteAllText(file, fileContext, Encoding.UTF8); }
/// <summary> /// 创建代码 /// </summary> /// <remarks> /// 这里需要输出3组文件 /// 1.客户端接口 /// 2.代理类 /// 3.代理类和接口的绑定 /// </remarks> /// <param name="dllFile"></param> /// <param name="outFolder">输出目录</param> /// <param name="nameSpace">基础的命名空间</param> public static void CreateCode(string dllFile, string outFolder, string nameSpace) { StringBuilder interfaceCode = new StringBuilder(); var dll = Assembly.LoadFrom(dllFile); StringBuilder proxyregBuilder = new StringBuilder(); foreach (var type in dll.GetTypes()) { if (type.IsInterface) { var i = type.GetCustomAttributes(typeof(ClientInterfaceAttribute), true); if (i.Length > 0) { // 将接口代码的代码重新复制过去 var code = new CreateInterfaceCode(type).CreateCode(); interfaceCode.Append(code); // 生成客户端解包代码并写入对应文件 code = new CreateReadCode(type).CreateCode(); string typeName = Utils.GetFixInterfaceName(type.Name); var context = FileCodeBase .Replace("#code#", code) .Replace("#namespace#", nameSpace) .Replace("#ClassName#", typeName) .Replace("`", "\""); string fileName = Path.Combine(outFolder, string.Format(@"Controller\{0}\{0}Controller.Net.cs", typeName)); var fi = new FileInfo(fileName); if (!fi.Directory.Exists) fi.Directory.Create(); File.WriteAllText(fileName, context, Encoding.UTF8); } } } var fileContext = InterfaceCodeBase .Replace("#code#", interfaceCode.ToString()) .Replace("#namespace#", nameSpace) .Replace("`", "\""); File.WriteAllText(Path.Combine(outFolder, @"Controller\Auto\LogicInterface.cs"), fileContext, Encoding.UTF8); }