@@ -473,38 +473,6 @@ public void OnExecuteForPropertyArgs(GeneratorExecutionContext context, IReadOnl
473473 return ;
474474 }
475475
476- static FieldDeclarationSyntax CreateFieldDeclaration ( INamedTypeSymbol type , string propertyName )
477- {
478- // Create a static field with a cached property changed/changing argument for a specified property.
479- // This code produces a field declaration as follows:
480- //
481- // [global::System.ComponentModel.EditorBrowsable(global::System.ComponentModel.EditorBrowsableState.Never)]
482- // [global::System.Obsolete("This field is not intended to be referenced directly by user code")]
483- // public static readonly <ARG_TYPE> <PROPERTY_NAME><ARG_TYPE> = new("<PROPERTY_NAME>");
484- return
485- FieldDeclaration (
486- VariableDeclaration ( IdentifierName ( type . ToDisplayString ( SymbolDisplayFormat . FullyQualifiedFormat ) ) )
487- . AddVariables (
488- VariableDeclarator ( Identifier ( $ "{ propertyName } { type . Name } ") )
489- . WithInitializer ( EqualsValueClause (
490- ImplicitObjectCreationExpression ( )
491- . AddArgumentListArguments ( Argument (
492- LiteralExpression ( SyntaxKind . StringLiteralExpression , Literal ( propertyName ) ) ) ) ) ) ) )
493- . AddModifiers (
494- Token ( SyntaxKind . PublicKeyword ) ,
495- Token ( SyntaxKind . StaticKeyword ) ,
496- Token ( SyntaxKind . ReadOnlyKeyword ) )
497- . AddAttributeLists (
498- AttributeList ( SingletonSeparatedList (
499- Attribute ( IdentifierName ( "global::System.ComponentModel.EditorBrowsable" ) ) . AddArgumentListArguments (
500- AttributeArgument ( ParseExpression ( "global::System.ComponentModel.EditorBrowsableState.Never" ) ) ) ) ) ,
501- AttributeList ( SingletonSeparatedList (
502- Attribute ( IdentifierName ( "global::System.Obsolete" ) ) . AddArgumentListArguments (
503- AttributeArgument ( LiteralExpression (
504- SyntaxKind . StringLiteralExpression ,
505- Literal ( "This field is not intended to be referenced directly by user code" ) ) ) ) ) ) ) ;
506- }
507-
508476 INamedTypeSymbol
509477 propertyChangedEventArgsSymbol = context . Compilation . GetTypeByMetadataName ( typeof ( PropertyChangedEventArgs ) . FullName ) ! ,
510478 propertyChangingEventArgsSymbol = context . Compilation . GetTypeByMetadataName ( typeof ( PropertyChangingEventArgs ) . FullName ) ! ;
@@ -563,5 +531,44 @@ static FieldDeclarationSyntax CreateFieldDeclaration(INamedTypeSymbol type, stri
563531 // Add the partial type
564532 context . AddSource ( $ "[{ typeof ( ObservablePropertyAttribute ) . Name } ]_[__KnownINotifyPropertyChangedOrChangingArgs].cs", SourceText . From ( source , Encoding . UTF8 ) ) ;
565533 }
534+
535+ /// <summary>
536+ /// Creates a field declaration for a cached property change name.
537+ /// </summary>
538+ /// <param name="type">The type of cached property change argument (either <see cref="PropertyChangedEventArgs"/> or <see cref="PropertyChangingEventArgs"/>).</param>
539+ /// <param name="propertyName">The name of the cached property name.</param>
540+ /// <returns>A <see cref="FieldDeclarationSyntax"/> instance for the input cached property name.</returns>
541+ [ Pure ]
542+ private static FieldDeclarationSyntax CreateFieldDeclaration ( INamedTypeSymbol type , string propertyName )
543+ {
544+ // Create a static field with a cached property changed/changing argument for a specified property.
545+ // This code produces a field declaration as follows:
546+ //
547+ // [global::System.ComponentModel.EditorBrowsable(global::System.ComponentModel.EditorBrowsableState.Never)]
548+ // [global::System.Obsolete("This field is not intended to be referenced directly by user code")]
549+ // public static readonly <ARG_TYPE> <PROPERTY_NAME><ARG_TYPE> = new("<PROPERTY_NAME>");
550+ return
551+ FieldDeclaration (
552+ VariableDeclaration ( IdentifierName ( type . ToDisplayString ( SymbolDisplayFormat . FullyQualifiedFormat ) ) )
553+ . AddVariables (
554+ VariableDeclarator ( Identifier ( $ "{ propertyName } { type . Name } ") )
555+ . WithInitializer ( EqualsValueClause (
556+ ImplicitObjectCreationExpression ( )
557+ . AddArgumentListArguments ( Argument (
558+ LiteralExpression ( SyntaxKind . StringLiteralExpression , Literal ( propertyName ) ) ) ) ) ) ) )
559+ . AddModifiers (
560+ Token ( SyntaxKind . PublicKeyword ) ,
561+ Token ( SyntaxKind . StaticKeyword ) ,
562+ Token ( SyntaxKind . ReadOnlyKeyword ) )
563+ . AddAttributeLists (
564+ AttributeList ( SingletonSeparatedList (
565+ Attribute ( IdentifierName ( "global::System.ComponentModel.EditorBrowsable" ) ) . AddArgumentListArguments (
566+ AttributeArgument ( ParseExpression ( "global::System.ComponentModel.EditorBrowsableState.Never" ) ) ) ) ) ,
567+ AttributeList ( SingletonSeparatedList (
568+ Attribute ( IdentifierName ( "global::System.Obsolete" ) ) . AddArgumentListArguments (
569+ AttributeArgument ( LiteralExpression (
570+ SyntaxKind . StringLiteralExpression ,
571+ Literal ( "This field is not intended to be referenced directly by user code" ) ) ) ) ) ) ) ;
572+ }
566573 }
567574}
0 commit comments