diff --git a/Polonium.Tasks.csproj b/Polonium.Tasks.csproj index a0a052c..496eb08 100644 --- a/Polonium.Tasks.csproj +++ b/Polonium.Tasks.csproj @@ -8,7 +8,7 @@ Polonium.Tasks Polonium.Tasks true - 0.0.92-d + 0.1.0 true true diff --git a/src/GenerateProxyNodesTask.cs b/src/GenerateProxyNodesTask.cs index 9bd3596..35cb097 100644 --- a/src/GenerateProxyNodesTask.cs +++ b/src/GenerateProxyNodesTask.cs @@ -68,7 +68,29 @@ public class GenerateProxyNodesTask : Task .AppendLine("using _BINDINGS_NAMESPACE_;") .AppendLine("using System;") .AppendLine("public partial class _CLASS_ : GlobalClasses._CLASS_") - .AppendLine("{") + .AppendLine("{"); + IEnumerable methods = cls.Members + .OfType() + .Where(m => m.AttributeLists + .SelectMany(a => a.Attributes) + .Any(attr => attr.Name.ToString().Contains("ProxyMethod")) + ); + foreach (MethodDeclarationSyntax proxyMethod in methods) + { + string methodReturnType = proxyMethod.ReturnType.ToString(); + string methodName = proxyMethod.Identifier.Text; + string methodArgs = string.Join(", ", proxyMethod.ParameterList.Parameters.Select(p => p.ToString())); + string paramNames = string.Join(", ", proxyMethod.ParameterList.Parameters.Select(p => p.Identifier.Text)); + sbx + .AppendLine($" public override {methodReturnType} {methodName}({methodArgs})") + .AppendLine(" {"); + if(methodReturnType=="void") + sbx.AppendLine($" base.{methodName}({paramNames});"); + else + sbx.AppendLine($" return base.{methodName}({paramNames});"); + sbx.AppendLine(" }"); + } + sbx .AppendLine("}"); if(!Directory.Exists($"{TemplateDirectory}/{className}")) Directory.CreateDirectory($"{TemplateDirectory}/{className}");