public void GenerateCode(Type[] types) { HashSet <string> namespaceHashSet = new HashSet <string>(); Dictionary <int, string> rpcEnumMap = new Dictionary <int, string>(); var rpcTypes = types.Where(t => Utility.IsRpcInterface(t)).ToArray(); var rpcCodeGen = new RpcCodeGenerator() { Options = Options }; foreach (var type in rpcTypes) { rpcCodeGen.GenerateCode(type, rpcEnumMap, CodeWriter); } var netViewRpcTypes = types.Where(t => Utility.IsViewRpcInterface(t)).ToArray(); var netViewRpcCodeGen = new ViewRpcCodeGenerator() { Options = Options }; foreach (var type in netViewRpcTypes) { netViewRpcCodeGen.GenerateCode(type, rpcEnumMap, CodeWriter); } var rpcEnumCodeGen = new RpcEnumCodeGenerator() { Options = Options }; rpcEnumCodeGen.GenerateCode(rpcEnumMap, CodeWriter); var aotCodeGen = new AotCodeGenerator() { Options = Options }; aotCodeGen.GenerateCode(rpcTypes.Concat(netViewRpcTypes).ToArray(), CodeWriter); Dictionary <string, string> formatterMap = new Dictionary <string, string>(); var netDataObjectTypes = types.Where(t => Utility.IsNetDataObjectAttribute(t)).ToArray(); var formatterCodeGen = new FormatterCodeGenerator() { Options = Options }; foreach (var type in netDataObjectTypes) { formatterCodeGen.GenerateCode(type, formatterMap, CodeWriter); /*if(string.IsNullOrEmpty(type.Namespace) == false && * namespaceHashSet.Contains(type.Namespace) == false) * { * namespaceHashSet.Add(type.Namespace); * CodeWriter.HeadLines.Add($"using {type.Namespace};"); * }*/ } CodeWriter.HeadLines.Add(""); var resolverCodeGen = new ResolverCodeGenerator() { Options = Options }; resolverCodeGen.GenerateCode(formatterMap, CodeWriter); }