Add support for indexers (#37)

* .

* .

* .

* ...

* .

* c

* p

* ok

* .
This commit is contained in:
Stef Heyenrath
2022-05-09 22:35:08 +02:00
committed by GitHub
parent ad2b22b008
commit 44213e91ab
11 changed files with 106 additions and 60 deletions
@@ -87,14 +87,18 @@ namespace {ns}
foreach (var property in MemberHelper.GetPublicProperties(targetClassSymbol, proxyBaseClasses))
{
var type = GetPropertyType(property, out var isReplaced);
if (isReplaced)
(string propertyType, string? propertyName, string getSet) = isReplaced ?
property.ToPropertyDetails(type) :
property.ToPropertyDetails();
if (property.IsIndexer)
{
str.AppendLine($" {property.ToPropertyText(type)}");
}
else
{
str.AppendLine($" {property.ToPropertyText()}");
var methodParameters = GetMethodParameters(property.Parameters, true);
propertyName = $"this[{string.Join(", ", methodParameters)}]";
}
str.AppendLine($" {propertyType} {propertyName} {getSet}");
str.AppendLine();
}
@@ -106,12 +110,13 @@ namespace {ns}
var str = new StringBuilder();
foreach (var method in MemberHelper.GetPublicMethods(targetClassSymbol, proxyBaseClasses))
{
var methodParameters = new List<string>();
foreach (var ps in method.Parameters)
{
var type = ps.GetTypeEnum() == TypeEnum.Complex ? GetParameterType(ps, out _) : ps.Type.ToString();
methodParameters.Add($"{ps.GetParamsPrefix()}{ps.GetRefPrefix()}{type} {ps.GetSanitizedName()}{ps.GetDefaultValue()}");
}
var methodParameters = GetMethodParameters(method.Parameters, true);
//var methodParameters = new List<string>();
//foreach (var ps in method.Parameters)
//{
// var type = ps.GetTypeEnum() == TypeEnum.Complex ? GetParameterType(ps, out _) : ps.Type.ToString();
// methodParameters.Add($"{ps.GetParamsPrefix()}{ps.GetRefPrefix()}{type} {ps.GetSanitizedName()}{ps.GetDefaultValue()}");
//}
var whereStatement = GetWhereStatementFromMethod(method);