8
votes

Générer des propriétés automatiques C # avec CodeDom

Y a-t-il un moyen de générer des propriétés automatiques C # avec CodeDom ou peut-être un autre ensemble de bibliothèques que je peux utiliser?


0 commentaires

5 Réponses :


6
votes

Non, ce n'est pas: C # codedom Propriété automatique

Jetez un coup d'œil à Cet article pour obtenir des exemples utiles


5 commentaires

Alors y a-t-il d'autres bibliothèques que je peux utiliser?


@Yassir Ce n'est vraiment pas si difficile de créer un champ de support et de les utiliser dans Getter / Setter.


Vous n'avez pas besoin; Comme le dit Marc Gravell, vous devez la mettre en œuvre vous-même, car ils ne sont qu'un astuce de compilateur (c'est-à-dire compiler crée une variable privée pour contenir votre valeur de propriété automatique)


En fait, je ne compile pas le code généré que je l'ajoutez à un projet, donc j'ai besoin de classes générées pour avoir des propriétés automatiques


Dans ce cas, vous pouvez utiliser un codesNippetStatement et codes hard ce que la propriété



2
votes

CodeDom est censé être une sorte de AST qui peut être converti en plusieurs langues ( typiquement c # et vb.net). Par conséquent, vous ne trouverez pas de fonctionnalités qui sont syntaxiques sucre d'une langue spécifique dans CodeDom.


0 commentaires

1
votes

En réalité, les commentaires à ce sujet sont faciles à utiliser un codeNippetStatement sont trompeurs car la codéypeDeclaration n'a aucune déclaration que vous pouvez ajouter ces extraits à.


0 commentaires

6
votes

Vous pouvez utiliser la classe CodesNippetTyPember pour cette fin.

Par exemple: P>

    CodeTypeDeclaration newType = new CodeTypeDeclaration("TestType");
    CodeSnippetTypeMember snippet = new CodeSnippetTypeMember();
    snippet.Comments.Add(new CodeCommentStatement("this is integer property", true));
    snippet.Text="public int IntergerProperty { get; set; }";
    newType.Members.Add(snippet);


0 commentaires

-2
votes

Vous pouvez le faire: selon Comment : Créez une classe en utilisant CodeDom

        // Declare the ID Property.
        CodeMemberProperty IDProperty = new CodeMemberProperty();
        IDProperty.Attributes = MemberAttributes.Public;
        IDProperty.Name = "Id";
        IDProperty.HasGet = true;
        IDProperty.HasSet = true;
        IDProperty.Type = new CodeTypeReference(typeof(System.Int16));
        IDProperty.Comments.Add(new CodeCommentStatement(
        "Id is identity"));
        targetClass.Members.Add(IDProperty);


1 commentaires

Cela ne fonctionne pas, car il génère deux vide et obtenez des méthodes qui entraîneront la compilation d'erreurs. Le codesNippettypembember ( Stackoverflow.com/a/23876973/191148 ) est la solution