Esempio n. 1
0
        string GenerateAbstractMessageMethodCode(string senderTypeName, IEnumerable <MethodInfo> methods)
        {
            var code = methods.Select(method =>
            {
                var paramTypeNamesCode = CodeGenerationUtility.GenerateParameterTypeNameCode(method.GetParameters());

                return($@"protected abstract void Handle_{method.Name}({senderTypeName} sender{paramTypeNamesCode});");
            })
                       .JoinWithLine();

            return(code);
        }
Esempio n. 2
0
        string GenerateRpcMethodCode(MethodInfo method, string senderTypeName)
        {
            var parameters    = method.GetParameters();
            var parameterCode = CodeGenerationUtility.GenerateParameterTypeNameCode(parameters);
            var writeCode     = parameters.Select(param => $"{Environment.NewLine}		writer.Write({param.Name});").Join();

            return
                ($@"public static void {method.Name}({senderTypeName} sender{parameterCode})
{{
	using (var writer = sender.CreatePacketWriter())
	{{
		writer.Write(MessageId.{method.Name});{writeCode}
	}}
}}");
        }
Esempio n. 3
0
        string GenerateHandlerDefinitionCode(string senderTypeName, IEnumerable <MethodInfo> methods)
        {
            var delegateCode = methods.Select(method =>
            {
                var paramCode = CodeGenerationUtility.GenerateParameterTypeNameCode(method.GetParameters());

                return($"public delegate void {method.Name}Handler({senderTypeName} sender{paramCode});");
            })
                               .JoinWithLine();
            var declaringCode = methods.Select(method => $"{method.Name}Handler on{method.Name};").JoinWithLine();
            var eventCode     = methods.Select(method => $"public event {method.Name}Handler On{method.Name} {{ add {{ on{method.Name} += value; }} remove {{ on{method.Name} -= value; }} }}").JoinWithLine();

            var code =
                $@"{delegateCode}

{declaringCode}

{eventCode}";

            return(code);
        }