@@ -115,7 +115,6 @@ private static void OnExecuteForProperties(
115115 item . LeadingTrivia ,
116116 item . FieldSymbol ,
117117 isNotifyPropertyChanging ,
118- isObservableObject ,
119118 isObservableValidator ,
120119 propertyChangedNames ,
121120 propertyChangingNames ) ) . ToArray ( ) ) ;
@@ -160,7 +159,6 @@ private static void OnExecuteForProperties(
160159 /// <param name="leadingTrivia">The leading trivia for the field to process.</param>
161160 /// <param name="fieldSymbol">The input <see cref="IFieldSymbol"/> instance to process.</param>
162161 /// <param name="isNotifyPropertyChanging">Indicates whether or not <see cref="INotifyPropertyChanging"/> is also implemented.</param>
163- /// <param name="isObservableObject">Indicates whether or not the containing type inherits from <c>ObservableObject</c>.</param>
164162 /// <param name="isObservableValidator">Indicates whether or not the containing type inherits from <c>ObservableValidator</c>.</param>
165163 /// <param name="propertyChangedNames">The collection of discovered property changed names.</param>
166164 /// <param name="propertyChangingNames">The collection of discovered property changing names.</param>
@@ -171,7 +169,6 @@ private static PropertyDeclarationSyntax CreatePropertyDeclaration(
171169 SyntaxTriviaList leadingTrivia ,
172170 IFieldSymbol fieldSymbol ,
173171 bool isNotifyPropertyChanging ,
174- bool isObservableObject ,
175172 bool isObservableValidator ,
176173 ICollection < string > propertyChangedNames ,
177174 ICollection < string > propertyChangingNames )
@@ -269,10 +266,10 @@ private static PropertyDeclarationSyntax CreatePropertyDeclaration(
269266 //
270267 // if (SetProperty(ref <FIELD_NAME>, value, true))
271268 // {
272- // OnPropertyChanged("Property1" ); // Optional
273- // OnPropertyChanged("Property2" );
269+ // OnPropertyChanged(global::Microsoft.Toolkit.Mvvm.ComponentModel.__Internals.__KnownINotifyPropertyChangedOrChangingArgs.Property1PropertyChangedEventArgs ); // Optional
270+ // OnPropertyChanged(global::Microsoft.Toolkit.Mvvm.ComponentModel.__Internals.__KnownINotifyPropertyChangedOrChangingArgs.Property2PropertyChangedEventArgs );
274271 // ...
275- // OnPropertyChanged("PropertyN" );
272+ // OnPropertyChanged(global::Microsoft.Toolkit.Mvvm.ComponentModel.__Internals.__KnownINotifyPropertyChangedOrChangingArgs.PropertyNPropertyChangedEventArgs );
276273 // }
277274 InvocationExpressionSyntax setPropertyExpression =
278275 InvocationExpression ( IdentifierName ( "SetProperty" ) )
@@ -287,54 +284,41 @@ private static PropertyDeclarationSyntax CreatePropertyDeclaration(
287284 _ => Block ( IfStatement ( setPropertyExpression , Block ( dependentPropertyNotificationStatements ) ) )
288285 } ;
289286 }
290- else if ( isObservableObject )
291- {
292- // Generate the inner setter block as follows:
293- //
294- // SetProperty(ref <FIELD_NAME>, value);
295- //
296- // Or in case there is at least one dependent property:
297- //
298- // if (SetProperty(ref <FIELD_NAME>, value))
299- // {
300- // OnPropertyChanged("Property1"); // Optional
301- // OnPropertyChanged("Property2");
302- // ...
303- // OnPropertyChanged("PropertyN");
304- // }
305- InvocationExpressionSyntax setPropertyExpression =
306- InvocationExpression ( IdentifierName ( "SetProperty" ) )
307- . AddArgumentListArguments (
308- Argument ( IdentifierName ( fieldSymbol . Name ) ) . WithRefOrOutKeyword ( Token ( SyntaxKind . RefKeyword ) ) ,
309- Argument ( IdentifierName ( "value" ) ) ) ;
310-
311- setterBlock = dependentPropertyNotificationStatements . Count switch
312- {
313- 0 => Block ( ExpressionStatement ( setPropertyExpression ) ) ,
314- _ => Block ( IfStatement ( setPropertyExpression , Block ( dependentPropertyNotificationStatements ) ) )
315- } ;
316- }
317287 else
318288 {
319289 BlockSyntax updateAndNotificationBlock = Block ( ) ;
320290
321- // Add the OnPropertyChanging() call if necessary
291+ // Add OnPropertyChanging(global::Microsoft.Toolkit.Mvvm.ComponentModel.__Internals.__KnownINotifyPropertyChangedOrChangingArgs.PropertyNamePropertyChangingEventArgs) if necessary
322292 if ( isNotifyPropertyChanging )
323293 {
324- updateAndNotificationBlock = updateAndNotificationBlock . AddStatements ( ExpressionStatement ( InvocationExpression ( IdentifierName ( "OnPropertyChanging" ) ) ) ) ;
294+ propertyChangingNames . Add ( propertyName ) ;
295+
296+ updateAndNotificationBlock = updateAndNotificationBlock . AddStatements ( ExpressionStatement (
297+ InvocationExpression ( IdentifierName ( "OnPropertyChanging" ) )
298+ . AddArgumentListArguments ( Argument ( MemberAccessExpression (
299+ SyntaxKind . SimpleMemberAccessExpression ,
300+ AliasQualifiedName ( IdentifierName ( Token ( SyntaxKind . GlobalKeyword ) ) , IdentifierName ( "Microsoft.Toolkit.Mvvm.ComponentModel.__Internals.__KnownINotifyPropertyChangedOrChangingArgs" ) ) ,
301+ IdentifierName ( $ "{ propertyName } { nameof ( PropertyChangingEventArgs ) } ") ) ) ) ) ) ;
325302 }
326303
304+ propertyChangedNames . Add ( propertyName ) ;
305+
327306 // Add the following statements:
328307 //
329308 // <FIELD_NAME> = value;
330- // OnPropertyChanged();
309+ // OnPropertyChanged(global::Microsoft.Toolkit.Mvvm.ComponentModel.__Internals.__KnownINotifyPropertyChangedOrChangingArgs.PropertyNamePropertyChangedEventArgs );
331310 updateAndNotificationBlock = updateAndNotificationBlock . AddStatements (
332311 ExpressionStatement (
333312 AssignmentExpression (
334313 SyntaxKind . SimpleAssignmentExpression ,
335314 IdentifierName ( fieldSymbol . Name ) ,
336315 IdentifierName ( "value" ) ) ) ,
337- ExpressionStatement ( InvocationExpression ( IdentifierName ( "OnPropertyChanged" ) ) ) ) ;
316+ ExpressionStatement (
317+ InvocationExpression ( IdentifierName ( "OnPropertyChanged" ) )
318+ . AddArgumentListArguments ( Argument ( MemberAccessExpression (
319+ SyntaxKind . SimpleMemberAccessExpression ,
320+ AliasQualifiedName ( IdentifierName ( Token ( SyntaxKind . GlobalKeyword ) ) , IdentifierName ( "Microsoft.Toolkit.Mvvm.ComponentModel.__Internals.__KnownINotifyPropertyChangedOrChangingArgs" ) ) ,
321+ IdentifierName ( $ "{ propertyName } { nameof ( PropertyChangedEventArgs ) } ") ) ) ) ) ) ;
338322
339323 // Add the dependent property notifications at the end
340324 updateAndNotificationBlock = updateAndNotificationBlock . AddStatements ( dependentPropertyNotificationStatements . ToArray ( ) ) ;
@@ -343,13 +327,13 @@ private static PropertyDeclarationSyntax CreatePropertyDeclaration(
343327 //
344328 // if (!global::System.Collections.Generic.EqualityComparer<<FIELD_TYPE>>.Default.Equals(<FIELD_NAME>, value))
345329 // {
346- // OnPropertyChanging(); // Optional
330+ // OnPropertyChanging(global::Microsoft.Toolkit.Mvvm.ComponentModel.__Internals.__KnownINotifyPropertyChangedOrChangingArgs.PropertyNamePropertyChangingEventArgs ); // Optional
347331 // <FIELD_NAME> = value;
348- // OnPropertyChanged();
349- // OnPropertyChanged("Property1" ); // Optional
350- // OnPropertyChanged("Property2" );
332+ // OnPropertyChanged(global::Microsoft.Toolkit.Mvvm.ComponentModel.__Internals.__KnownINotifyPropertyChangedOrChangingArgs.PropertyNamePropertyChangedEventArgs );
333+ // OnPropertyChanged(global::Microsoft.Toolkit.Mvvm.ComponentModel.__Internals.__KnownINotifyPropertyChangedOrChangingArgs.Property1PropertyChangedEventArgs ); // Optional
334+ // OnPropertyChanged(global::Microsoft.Toolkit.Mvvm.ComponentModel.__Internals.__KnownINotifyPropertyChangedOrChangingArgs.Property2PropertyChangedEventArgs );
351335 // ...
352- // OnPropertyChanged("PropertyN" );
336+ // OnPropertyChanged(global::Microsoft.Toolkit.Mvvm.ComponentModel.__Internals.__KnownINotifyPropertyChangedOrChangingArgs.PropertyNPropertyChangedEventArgs );
353337 // }
354338 setterBlock = Block (
355339 IfStatement (
0 commit comments