1

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

実際にプロパティに名前を付けて出力例と一致させるために、コード例にビットを追加する必要があったことを考えると、これを引き起こしている詳細が欠落していると思われますが、追跡できないようですか? コードのコンパイル中は、パラメータを手動で追加しないとプロパティを使用できないため、目的が多少損なわれます。何が欠けているのですか?

4

1 に答える 1

0

この DevCity 記事のコメント #3 は、それは問題ではないことを示唆していますが、Reflectorはコード生成用の独自の実装を持っている可能性がありますが、期待どおりに動作することは知っています...

于 2009-04-17T10:51:42.983 に答える