Esempio n. 1
0
        string GenerateHandleMessageMethodCode(string senderTypeName, IEnumerable <MethodInfo> methods)
        {
            var handleMessageCode = methods.Select(method =>
            {
                var parameters          = method.GetParameters();
                var readMessageDataCode = parameters.Select(param =>
                {
                    var postfix = TypeUtility.GetPacketReaderReadMethodPostfix(param.ParameterType);
                    return($"var {param.Name} = reader.Read{postfix}();");
                })
                                          .Join($"{Environment.NewLine}	");

                var paramNamesCode = CodeGenerationUtility.GenerateParameterNameCode(parameters);

                var code =
                    $@"void Handle{method.Name}({senderTypeName} sender, PacketReader reader)
{{
	{readMessageDataCode}
	
	Handle_{method.Name}(sender{paramNamesCode});
	on{method.Name}?.Invoke(sender{paramNamesCode});
}}";

                return(code);
            })
                                    .Join($"{Environment.NewLine}{Environment.NewLine}");

            return(handleMessageCode);
        }