2010-11-12 29 views
0

Voici mon JSON formated cordesdésérialisation JSON dans byrefrence objet ParametrizedConstructor avec Json.NET

{ "AliasName": "ysiCountryInfo", "DataClass": { "Description": "États-Unis 111", "Code" : "usa", "WriteOffTaxPointAdjustment": 0, "IndexationRounding": 6}}

Je voudrais désérialiser objet en dessous de la classe

Option Explicit Sur Option Strict On

importations BaseApp.ysiBaseData Importations Common.DataClasses Systèmes Importations

Namespace DataClasses

Public Class JSONFormatClass(Of ItemType) 

    Private _Alias As String 
    Public Property AliasName() As String 
     Get 
      Return _Alias 
     End Get 
     Set(ByVal value As String) 
      _Alias = value 
     End Set 
    End Property 

    Private _DataClass As ItemType 
    Public Property DataClass() As ItemType 
     Get 
      Return _DataClass 
     End Get 
     Set(ByVal value As ItemType) 
      _DataClass = value 
     End Set 
    End Property 

End Class 

Fin Namespace

Où la propriété "DataClass" est le type d'une classe de "Common.DataClasses".

Et toutes les classes dans ceci ont un constructeur paramétré qui accepte ByRef LoginCredential Object.

Et Mon code est ci-dessous:

Dim loginData As New ysiLoginData()

With loginData 
    .Server = "xxxxx" 
    .Platform = ServerType.SqlServer 
    .Database = "xxxx"  
    .UserName = "xx" 
    .Password = "xxxxx" 
    .DeveloperMode = True 
    End With 

Dim SessionKey As New ysiSessionKey (loginData)

Dim strJSON As String = HttpUtility.UrlDecode (contexte .Request.Form.ToString())

Dim objJSON en tant que JSONFormatClass (Of ysiCountryInfo) = JsonConvert.DeserializeObject (De JSONFormatClass (Of ysiCoun tryInfo)) (strJSON)

json format de chaîne: {"AliasName": "ysiCountryInfo", "DataClass": {"Description": "Etats-Unis 111", "Code": "usa", "WriteOffTaxPointAdjustment": 0, "IndexationRounding": 6}}

ici "ysiCountryInfo" est le type de classe dans lequel je voudrais convertir ma propriété "DataClass". "ysiCountryInfo" a un constructeur paramétré qui nécessite le paramètre "ysiSessionKey" par ref.

Dim objCountryInfo comme New ysiCountryInfo (ysiSessionKey)

Je reçois erreur dans le fichier JsonSerializerInternalReader.js de JSON à la ligne # 808

objet

createdObject = contract.ParametrizedConstructor.Invoke (constructorParameters.Values.ToArray ());

Parce que constructorParameters.Values ​​est nul

S'il vous plaît me aider à résoudre ce problème le plus tôt possible.

Merci Dhiren Mistry

Répondre

0

Désolé j'ai été mis en œuvre son tort.

J'ai résolu ce problème en modifiant ma propriété Generic Class DataClass comme ci-dessous.

Private _DataClass As ItemType 
Public Property DataClass() As ItemType 
      Get 
       If _DataClass Is Nothing Then 
        Dim loginData As New ysiLoginData() 
        With loginData 
         .Server = "xxxx" 
         .Platform = ServerType.SqlServer 
         .Database = "xxx" 
         .UserName = "xx" 
         .Password = "xxx" 
         .DeveloperMode = True 
        End With 

        Dim SessionKey As New ysiSessionKey(loginData) 

        Dim args As Object() = {SessionKey} 

        _DataClass = DirectCast(Activator.CreateInstance("YSI.Common", String.Format("{0}", GetType(ItemType).ToString()), True, BindingFlags.Instance Or BindingFlags.Public, Nothing, args, Nothing, Nothing).Unwrap(), ItemType) 

       End If 
       Return _DataClass 
      End Get 
      Set(ByVal value As ItemType) 
       _DataClass = value 
      End Set 
     End Property