Skip to content

Commit b764a83

Browse files
Working on getters and setters
1 parent e725942 commit b764a83

1 file changed

Lines changed: 44 additions & 14 deletions

File tree

src/ThunderDesign.Net-PCL.SourceGenerators/UnifiedPropertyGenerator.cs

Lines changed: 44 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
using Microsoft.CodeAnalysis.CSharp;
33
using Microsoft.CodeAnalysis.CSharp.Syntax;
44
using Microsoft.CodeAnalysis.Text;
5+
using System;
56
using System.Collections.Generic;
67
using System.Diagnostics;
78
using System.Linq;
@@ -294,15 +295,22 @@ static string GetWidestAccessibility(string getter, string setter)
294295
var notifyArg = notify ? "true" : "false";
295296
if (readOnly)
296297
{
298+
string getterModifier = getterValue.ToString().Equals(propertyAccessRaw, StringComparison.OrdinalIgnoreCase)
299+
? ""
300+
: ToPropertyAccessibilityString(getterValue.ToString());
301+
297302
source.AppendLine($@"
298303
{propertyAccessibilityStr}{typeName} {propertyName}
299304
{{
300-
{getterStr}get {{ return this.GetProperty(ref {fieldName}, {lockerArg}); }}
305+
{getterModifier}get {{ return this.GetProperty(ref {fieldName}, {lockerArg}); }}
301306
}}");
302307
}
303308
else
304309
{
305-
string setAccessor;
310+
string getterModifier = getterValue.ToString().Equals(propertyAccessRaw, StringComparison.OrdinalIgnoreCase)
311+
? ""
312+
: ToPropertyAccessibilityString(getterValue.ToString());
313+
306314
if (alsoNotify.Length > 0)
307315
{
308316
var notifyCalls = new StringBuilder();
@@ -311,27 +319,37 @@ static string GetWidestAccessibility(string getter, string setter)
311319
if (!string.IsNullOrEmpty(prop))
312320
notifyCalls.AppendLine($" this.OnPropertyChanged(\"{prop}\");");
313321
}
314-
setAccessor = $@"
315-
{setterStr}set
322+
323+
string setterModifier = setterValue.ToString().Equals(propertyAccessRaw, StringComparison.OrdinalIgnoreCase)
324+
? ""
325+
: ToPropertyAccessibilityString(setterValue.ToString());
326+
327+
source.AppendLine($@"
328+
{propertyAccessibilityStr}{typeName} {propertyName}
329+
{{
330+
{getterModifier}get {{ return this.GetProperty(ref {fieldName}, {lockerArg}); }}
331+
{setterModifier}set
316332
{{
317333
if (this.SetProperty(ref {fieldName}, value, {lockerArg}, {notifyArg}))
318334
{{
319335
{notifyCalls.ToString().TrimEnd()}
320336
}}
321-
}}";
337+
}}
338+
}}");
322339
}
323340
else
324341
{
325-
setAccessor = $@"
326-
{setterStr}set {{ this.SetProperty(ref {fieldName}, value, {lockerArg}, {notifyArg}); }}";
327-
}
342+
string setterModifier = setterValue.ToString().Equals(propertyAccessRaw, StringComparison.OrdinalIgnoreCase)
343+
? ""
344+
: ToPropertyAccessibilityString(setterValue.ToString());
328345

329-
source.AppendLine($@"
346+
source.AppendLine($@"
330347
{propertyAccessibilityStr}{typeName} {propertyName}
331348
{{
332-
{getterStr}get {{ return this.GetProperty(ref {fieldName}, {lockerArg}); }}
333-
{setAccessor}
349+
{getterModifier}get {{ return this.GetProperty(ref {fieldName}, {lockerArg}); }}
350+
{setterModifier}set {{ this.SetProperty(ref {fieldName}, value, {lockerArg}, {notifyArg}); }}
334351
}}");
352+
}
335353
}
336354
}
337355

@@ -366,19 +384,31 @@ static string GetWidestAccessibility(string getter, string setter)
366384
var lockerArg = threadSafe ? "_Locker" : "null";
367385
if (readOnly)
368386
{
387+
string getterModifier = getterValue.ToString().Equals(propertyAccessRaw, StringComparison.OrdinalIgnoreCase)
388+
? ""
389+
: ToPropertyAccessibilityString(getterValue.ToString());
390+
369391
source.AppendLine($@"
370392
{propertyAccessibilityStr}{typeName} {propertyName}
371393
{{
372-
{getterStr}get {{ return this.GetProperty(ref {fieldName}, {lockerArg}); }}
394+
{getterModifier}get {{ return this.GetProperty(ref {fieldName}, {lockerArg}); }}
373395
}}");
374396
}
375397
else
376398
{
399+
string getterModifier = getterValue.ToString().Equals(propertyAccessRaw, StringComparison.OrdinalIgnoreCase)
400+
? ""
401+
: ToPropertyAccessibilityString(getterValue.ToString());
402+
403+
string setterModifier = setterValue.ToString().Equals(propertyAccessRaw, StringComparison.OrdinalIgnoreCase)
404+
? ""
405+
: ToPropertyAccessibilityString(setterValue.ToString());
406+
377407
source.AppendLine($@"
378408
{propertyAccessibilityStr}{typeName} {propertyName}
379409
{{
380-
{getterStr}get {{ return this.GetProperty(ref {fieldName}, {lockerArg}); }}
381-
{setterStr}set {{ this.SetProperty(ref {fieldName}, value, {lockerArg}); }}
410+
{getterModifier}get {{ return this.GetProperty(ref {fieldName}, {lockerArg}); }}
411+
{setterModifier}set {{ this.SetProperty(ref {fieldName}, value, {lockerArg}); }}
382412
}}");
383413
}
384414
}

0 commit comments

Comments
 (0)