diff --git a/src-examples/ProxyInterfaceConsumer/Person.cs b/src-examples/ProxyInterfaceConsumer/Person.cs index 889ee54..ea91128 100644 --- a/src-examples/ProxyInterfaceConsumer/Person.cs +++ b/src-examples/ProxyInterfaceConsumer/Person.cs @@ -30,6 +30,10 @@ namespace ProxyInterfaceConsumer return 600; } + public void AddWithParams(params string[] values) + { + } + public Address AddAddress(Address a) { AddressesDict.Add($"{AddressesDict.Count}", a); @@ -37,6 +41,10 @@ namespace ProxyInterfaceConsumer return a; } + public void AddAddresses(params Address[] addresses) + { + } + public void Void() { } diff --git a/src/ProxyInterfaceSourceGenerator/Extensions/SymbolExtensions.cs b/src/ProxyInterfaceSourceGenerator/Extensions/SymbolExtensions.cs index cf6be4d..a8d376e 100644 --- a/src/ProxyInterfaceSourceGenerator/Extensions/SymbolExtensions.cs +++ b/src/ProxyInterfaceSourceGenerator/Extensions/SymbolExtensions.cs @@ -5,6 +5,11 @@ namespace ProxyInterfaceSourceGenerator.Extensions { internal static class SymbolExtensions { + public static string GetParamsPrefix(this IParameterSymbol ps) + { + return ps.IsParams ? "params " : string.Empty; + } + public static TypeEnum GetTypeEnum(this IPropertySymbol p) { return GetTypeEnum(p.Type); diff --git a/src/ProxyInterfaceSourceGenerator/FileGenerators/PartialInterfacesGenerator.cs b/src/ProxyInterfaceSourceGenerator/FileGenerators/PartialInterfacesGenerator.cs index 3df685f..9e88a8b 100644 --- a/src/ProxyInterfaceSourceGenerator/FileGenerators/PartialInterfacesGenerator.cs +++ b/src/ProxyInterfaceSourceGenerator/FileGenerators/PartialInterfacesGenerator.cs @@ -88,15 +88,8 @@ namespace {ns} var methodParameters = new List(); foreach (var ps in method.Parameters) { - if (ps.GetTypeEnum() == TypeEnum.Complex) - { - var type = GetParameterType(ps, out _); - methodParameters.Add($"{type} {ps.Name}"); - } - else - { - methodParameters.Add($"{ps.Type} {ps.Name}"); - } + var type = ps.GetTypeEnum() == TypeEnum.Complex ? GetParameterType(ps, out _) : ps.Type.ToString(); + methodParameters.Add($"{ps.GetParamsPrefix()}{type} {ps.Name}"); } str.AppendLine($" {GetReplacedType(method.ReturnType, out _)} {method.Name}({string.Join(", ", methodParameters)});"); diff --git a/src/ProxyInterfaceSourceGenerator/FileGenerators/ProxyClassesGenerator.cs b/src/ProxyInterfaceSourceGenerator/FileGenerators/ProxyClassesGenerator.cs index 7b16710..dfbd30f 100644 --- a/src/ProxyInterfaceSourceGenerator/FileGenerators/ProxyClassesGenerator.cs +++ b/src/ProxyInterfaceSourceGenerator/FileGenerators/ProxyClassesGenerator.cs @@ -130,7 +130,7 @@ namespace {ns} if (ps.GetTypeEnum() == TypeEnum.Complex) { var type = GetParameterType(ps, out var isReplaced); - methodParameters.Add($"{type} {ps.Name}"); + methodParameters.Add($"{ps.GetParamsPrefix()}{type} {ps.Name}"); if (isReplaced) { @@ -143,7 +143,7 @@ namespace {ns} } else { - methodParameters.Add($"{ps.Type} {ps.Name}"); + methodParameters.Add($"{ps.GetParamsPrefix()}{ps.Type} {ps.Name}"); invokeParameters.Add($"{ps.Name}"); }