Pregunta

Mirando el código de ejemplo en MSDN :

Este

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

debe generar

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

Pero no estoy viendo que genera el parámetro con el método, es decir, Me sale:

       Set
           Me.integerField = value
       End Set

Dado que ya he tenido que añadir en bits para el código de ejemplo para nombrar realidad la propiedad para que coincida con su salida de ejemplo, sospecho que hay un detalle que falta que está causando esto, pero parece que no puede rastrearlo ? Mientras que el código se compila, no soy capaz de utilizar las propiedades sin añadir manualmente en los parámetros, que contradice el objetivo un poco. ¿Alguna idea de lo que falta?

¿Fue útil?

Solución

El comentario # 3 en la este artículo DevCity sugiere que no debería importar , pero sí sé que Reflector se comporta como usted está esperando, aunque puede tiene su propia aplicación para la generación de código ...

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top