簡體   English   中英

從父類訪問子類的屬性

[英]Access Property of a child class from Parent class

問題:

我已經從JSON制作了一個類,該類是由外部公司提供的,用於向其系統發送訂單

部分課程:

Public Class SalesOrder
  Public Class Field
    Public Property Name() As String
        Get
            Return m_Name
        End Get
        Set(value As String)
            m_Name = value
        End Set
    End Property
    Private m_Name As String
    Public Property FieldType() As String
        Get
            Return m_FieldType
        End Get
        Set(value As String)
            m_FieldType = value
        End Set
    End Property
    Private m_FieldType As String
  End Class
End Class

案件:

假設我通過使用JSON提取txt文件並從那里解析該類來創建SalesOrder類的新實例,現在我想訪問Field類內部的Name屬性,以便對其進行編輯。 如何從SalesOrder類的新實例執行此操作? 每當我嘗試訪問它時,它都會告訴我它是一種類型,不能用作表達式

例:

Dim sOrder As New SalesOrder
            sOrder = JsonConvert.DeserializeObject(Of SalesOrder)(File.ReadAllText("C:\Users\Something\Documents\Visual Studio 2010\Projects\SomethingElse\WebApplication1\OrderDefinitionJSON.txt"))
                    Dim FieldName As String = SOrder.Field.Name

這將導致sOrder.Field發生異常

編輯:

JSON格式

這是我嘗試讀取的JSON的一部分:

{
    "BookDate": "2016-12-18T10:39:05.276Z",
    "BusinessObject": "SO1",
    "Table": {
        "Definition": {
            "Name": "SO_HDR",
            "Fields": [{
                "Name": "RowId",
                "FieldType": "C"
            }]
        }
    }
}

謝謝!

您的類SalesOrder不包含Field類的等距。 如果要設置屬性,則必須向SalesOrder類添加屬性:

Public Class SalesOrder
  Public SalesField as Field
End Class

Public Class Field
    Public Property Name() As String
        Get
            Return m_Name
        End Get
        Set(value As String)
            m_Name = value
        End Set
    End Property
    Private m_Name As String
    Public Property FieldType() As String
        Get
            Return m_FieldType
        End Get
        Set(value As String)
            m_FieldType = value
        End Set
    End Property
    Private m_FieldType As String
  End Class

現在,如果您正確反序列化並且SalesField不是零,則可以:

Dim sOrder As New SalesOrder
            sOrder = JsonConvert.DeserializeObject(Of SalesOrder)(File.ReadAllText("C:\Users\Something\Documents\Visual Studio 2010\Projects\SomethingElse\WebApplication1\OrderDefinitionJSON.txt"))
                    Dim FieldName As String = SOrder.Field.Name

暫無
暫無

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

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