簡體   English   中英

使用Codedom編寫VB.Net屬性

[英]Using Codedom to write VB.Net Properties

查看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

鑒於我已經不得不在示例代碼中添加一些位以實際命名屬性以匹配其示例輸出,因此我懷疑是否有一個導致此問題的細節丟失,但我似乎無法對其進行追蹤? 在編譯代碼的同時,我無法在不手動添加參數的情況下使用屬性,這在一定程度上違背了目的。 知道缺少什么嗎?

關於DevCity的這篇文章的評論#3建議不要緊,但我確實知道Reflector的行為確實符合您的期望,盡管它可能具有代碼生成的自己的實現...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM