Add members-to-ignore to proxy data

This commit is contained in:
Adam Hathcock
2024-05-21 13:56:58 +01:00
parent e5a0b7b7d3
commit 2baba84655
8 changed files with 73 additions and 275 deletions
@@ -64,9 +64,9 @@ internal class PartialInterfacesGenerator : BaseGenerator, IFilesGenerator
var implements = implementedInterfacesNames.Any() ? $" : {string.Join(", ", implementedInterfacesNames)}" : string.Empty;
var @new = extendsProxyClasses.Any() ? "new " : string.Empty;
var (namespaceStart, namespaceEnd) = NamespaceBuilder.Build(ns);
var events = GenerateEvents(classSymbol, proxyData.ProxyBaseClasses);
var properties = GenerateProperties(classSymbol, proxyData.ProxyBaseClasses);
var methods = GenerateMethods(classSymbol, proxyData.ProxyBaseClasses).TrimEnd();
var events = GenerateEvents(classSymbol, proxyData);
var properties = GenerateProperties(classSymbol, proxyData);
var methods = GenerateMethods(classSymbol, proxyData).TrimEnd();
return $@"//----------------------------------------------------------------------------------------
// <auto-generated>
@@ -109,11 +109,11 @@ methods}
return t => !hashSet.Contains(t.Name);
}
private string GenerateProperties(ClassSymbol targetClassSymbol, bool proxyBaseClasses)
private string GenerateProperties(ClassSymbol targetClassSymbol, ProxyData proxyData)
{
var str = new StringBuilder();
foreach (var property in MemberHelper.GetPublicProperties(targetClassSymbol, proxyBaseClasses, InterfaceFilter<IPropertySymbol>()))
foreach (var property in MemberHelper.GetPublicProperties(targetClassSymbol, proxyData, InterfaceFilter<IPropertySymbol>()))
{
var type = GetPropertyType(property, out var isReplaced);
@@ -142,10 +142,10 @@ methods}
return str.ToString();
}
private string GenerateMethods(ClassSymbol targetClassSymbol, bool proxyBaseClasses)
private string GenerateMethods(ClassSymbol targetClassSymbol, ProxyData proxyData)
{
var str = new StringBuilder();
foreach (var method in MemberHelper.GetPublicMethods(targetClassSymbol, proxyBaseClasses, InterfaceFilter<IMethodSymbol>()))
foreach (var method in MemberHelper.GetPublicMethods(targetClassSymbol, proxyData, InterfaceFilter<IMethodSymbol>()))
{
var methodParameters = GetMethodParameters(method.Parameters, true);
var whereStatement = GetWhereStatementFromMethod(method);
@@ -162,10 +162,10 @@ methods}
return str.ToString();
}
private string GenerateEvents(ClassSymbol targetClassSymbol, bool proxyBaseClasses)
private string GenerateEvents(ClassSymbol targetClassSymbol, ProxyData proxyData)
{
var str = new StringBuilder();
foreach (var @event in MemberHelper.GetPublicEvents(targetClassSymbol, proxyBaseClasses, InterfaceFilter<IMethodSymbol>()))
foreach (var @event in MemberHelper.GetPublicEvents(targetClassSymbol, proxyData, InterfaceFilter<IMethodSymbol>()))
{
var ps = @event.First().Parameters.First();
var type = ps.GetTypeEnum() == TypeEnum.Complex ? GetParameterType(ps, out _) : ps.Type.ToString();
@@ -76,10 +76,10 @@ internal partial class ProxyClassesGenerator : BaseGenerator, IFilesGenerator
}
var @abstract = string.Empty; // targetClassSymbol.Symbol.IsAbstract ? "abstract " : string.Empty;
var properties = GeneratePublicProperties(targetClassSymbol, pd.ProxyBaseClasses);
var methods = GeneratePublicMethods(targetClassSymbol, pd.ProxyBaseClasses);
var events = GenerateEvents(targetClassSymbol, pd.ProxyBaseClasses);
var operators = GenerateOperators(targetClassSymbol, pd.ProxyBaseClasses);
var properties = GeneratePublicProperties(targetClassSymbol, pd);
var methods = GeneratePublicMethods(targetClassSymbol, pd);
var events = GenerateEvents(targetClassSymbol, pd);
var operators = GenerateOperators(targetClassSymbol, pd);
var configurationForMapster = string.Empty;
if (Context.ReplacedTypes.Count > 0)
@@ -124,11 +124,11 @@ operators}
{SupportsNullable.IIf("#nullable restore")}";
}
private string GeneratePublicProperties(ClassSymbol targetClassSymbol, bool proxyBaseClasses)
private string GeneratePublicProperties(ClassSymbol targetClassSymbol, ProxyData proxyData)
{
var str = new StringBuilder();
foreach (var property in MemberHelper.GetPublicProperties(targetClassSymbol, proxyBaseClasses))
foreach (var property in MemberHelper.GetPublicProperties(targetClassSymbol, proxyData))
{
var type = GetPropertyType(property, out var isReplaced);
@@ -190,11 +190,11 @@ operators}
return str.ToString();
}
private string GeneratePublicMethods(ClassSymbol targetClassSymbol, bool proxyBaseClasses)
private string GeneratePublicMethods(ClassSymbol targetClassSymbol, ProxyData proxyData)
{
var str = new StringBuilder();
var methods = MemberHelper.GetPublicMethods(targetClassSymbol, proxyBaseClasses);
var methods = MemberHelper.GetPublicMethods(targetClassSymbol, proxyData);
foreach (var method in methods)
{
@@ -305,10 +305,10 @@ operators}
return str.ToString();
}
private string GenerateEvents(ClassSymbol targetClassSymbol, bool proxyBaseClasses)
private string GenerateEvents(ClassSymbol targetClassSymbol, ProxyData proxyData)
{
var str = new StringBuilder();
foreach (var @event in MemberHelper.GetPublicEvents(targetClassSymbol, proxyBaseClasses))
foreach (var @event in MemberHelper.GetPublicEvents(targetClassSymbol, proxyData))
{
var name = @event.Key.GetSanitizedName();
var ps = @event.First().Parameters.First();
@@ -337,16 +337,21 @@ operators}
return str.ToString();
}
private string GenerateOperators(ClassSymbol targetClassSymbol, bool proxyBaseClasses)
private string GenerateOperators(ClassSymbol targetClassSymbol, ProxyData proxyData)
{
var str = new StringBuilder();
foreach (var @operator in MemberHelper.GetPublicStaticOperators(targetClassSymbol, proxyBaseClasses))
foreach (var @operator in MemberHelper.GetPublicStaticOperators(targetClassSymbol, proxyData))
{
foreach (var attribute in @operator.GetAttributesAsList())
{
str.AppendLine($" {attribute}");
}
if (!@operator.Parameters.Any())
{
continue;
}
var parameter = @operator.Parameters.First();
var proxyClassName = targetClassSymbol.Symbol.ResolveProxyClassName();