Использование Codedom для записи свойств VB.Net

Глядя на пример кода на MSDN :

Этот

    ' 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)

должен генерировать

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

Но я не вижу, чтобы он генерировал параметр для метода Set, т.е. Я получил:

       Set
           Me.integerField = value
       End Set

Учитывая, что мне уже пришлось добавить биты в код примера, чтобы фактически назвать свойство, чтобы оно соответствовало выходным данным примера, я подозреваю, что отсутствует какая-то деталь, которая вызывает это, но я не могу отследить это? Пока код компилируется, я не могу использовать свойства без добавления параметров вручную, что несколько противоречит цели. Есть идеи, чего не хватает?


person Ben    schedule 17.04.2009    source источник


Ответы (1)


Комментарий №3 к этой статье DevCity предполагает, что это не имеет значения, но я знайте, что Reflector ведет себя так, как вы ожидаете, хотя может иметь собственную реализацию для генерации кода...

person Rowland Shaw    schedule 17.04.2009