Y a-t-il un moyen de générer des propriétés automatiques C # avec CodeDom
5 Réponses :
Non, ce n'est pas: C # codedom Propriété automatique P>
Jetez un coup d'œil à
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 code> et codes hard ce que la propriété
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. P>
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 à. P>
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);
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);
Cela ne fonctionne pas, car il génère deux vide code> et
obtenez des méthodes code> qui entraîneront la compilation d'erreurs. Le
codesNippettypembember code> ( Stackoverflow.com/a/23876973/191148 ) est la solution