Imports System.Collections
Imports System.Collections.Generic
Imports System.Globalization
Imports System.Reflection
Imports System.ComponentModel.DataAnnotations
Imports Newtonsoft.Json.Linq
Imports Newtonsoft.Json.Converters
Imports Newtonsoft.Json.Serialization
Public Property FullName as String
Private ReadOnly _Parent As Word.Document
Sub New(Parent As Word.Document, Foo As String, Bar As String)
Sub New(Parent As Word.Document)
Function GetFile() As System.IO.FileInfo
Return New FileInfo(_Parent.FullName)
Friend Function GetParent() As Word.Document
Inherits CustomCreationConverter(Of MyObject)
Private ReadOnly _Parent As Word.Document
Sub New(Parent As Word.Document)
If Parent Is Nothing Then
Throw New ArgumentNullException("Parent")
Overrides Function Create(objectType as Type) As MyObject
Return New MyObject(_Parent)
Dim jsonString = GetJson()
Dim document = New Word.Document()
Dim settings = New JsonSerializerSettings() With { .Converters = { new MyObjectConverter(document) } }
Dim list = JsonConvert.DeserializeObject(Of List(Of MyObject))(jsonString, settings)
Assert.IsTrue(list.All(Function(o) document.Equals(o.GetParent())))
Dim json2 = JsonConvert.SerializeObject(list, Newtonsoft.Json.Formatting.Indented, settings)
Function GetJson() as String
Dim Jstring As String = <![CDATA[
Console.WriteLine("Environment version: " & Environment.Version.ToString())
Console.WriteLine("Json.NET version: " & GetType(JsonSerializer).Assembly.FullName)
Console.WriteLine("Unhandled exception: ")