2009-04-17 11 views
1

Mit Blick auf die Beispiel-Code auf MSDN schreiben:CodeDOM Mit VB.Net Eigenschaften

Diese

' Declares a type. 
    Dim type1 As New CodeTypeDeclaration("Type1") 

    ' Declares a constructor. 
    Dim constructor1 As New CodeConstructor 
    constructor1.Attributes = MemberAttributes.Public 
    type1.Members.Add(constructor1) 

    ' Declares an integer field. 
    Dim field1 As New CodeMemberField("System.Int32", "integerField") 
    type1.Members.Add(field1) 

    ' Declares a property. 
    Dim property1 As New CodeMemberProperty 
    property1.Name = "integerProperty" 
    property1.Type = New CodeTypeReference(GetType(Integer)) 
    ' Declares a property get statement to return the value of the integer field. 
    property1.GetStatements.Add(New CodeMethodReturnStatement(New CodeFieldReferenceExpression(New CodeThisReferenceExpression, "integerField"))) 
    ' Declares a property set statement to set the value to the integer field. 
    ' The CodePropertySetValueReferenceExpression represents the value argument passed to the property set statement. 
    property1.SetStatements.Add(New CodeAssignStatement(New CodeFieldReferenceExpression(New CodeThisReferenceExpression, "integerField"), New CodePropertySetValueReferenceExpression)) 
    type1.Members.Add(property1) 

    Dim dump As New VBCodeProvider 
    Dim gen As Compiler.ICodeGenerator = dump.CreateGenerator 
    Dim opt As New Compiler.CodeGeneratorOptions 

    gen.GenerateCodeFromType(type1, Console.Out, opt) 

erzeugen sollte

Public Class Type1 

    Private integerField As Integer 

    Public Sub New() 
     MyBase.New() 
    End Sub 

    Private Property integerProperty() As Integer 
     Get 
      Return Me.integerField 
     End Get 
     Set(ByVal Value As Integer) 
      Me.integerField = value 
     End Set 
    End Property 
End Class 

Aber ich sehe es nicht zu erzeugen, um den Parameter zur Set-Methode, also Ich bekomme:

 Set 
      Me.integerField = value 
     End Set 

Da ich bereits in Bits zum Beispiel Code hinzuzufügen hatte tatsächlich die Eigenschaft zu nennen, ihrem Beispiel Ausgabe übereinstimmen, vermute ich, dass es ein Detail fehlt, dass dies verursacht, aber ich kann scheinst du es aufzuspüren? Während der Code kompiliert, kann ich die Eigenschaften nicht verwenden, ohne die Parameter manuell hinzuzufügen, was den Zweck etwas zunichte macht. Irgendeine Idee, was fehlt?

Antwort

0

Kommentar # 3 auf this DevCity article schlägt vor, es sollte keine Rolle spielen, aber ich weiß, dass Reflector verhält sich wie Sie erwarten, obwohl es kann es ist eine eigene Implementierung für die Codegenerierung haben ...

Verwandte Themen