From aef967c575f837672ea376f483c945672a831044 Mon Sep 17 00:00:00 2001 From: HLWeil Date: Tue, 28 Jan 2025 13:25:53 +0100 Subject: [PATCH] Update generated documentation for version 7.0.0 --- index.html | 306 ++++++++++++++++++++++++++--------------------------- index.json | 2 +- 2 files changed, 154 insertions(+), 154 deletions(-) diff --git a/index.html b/index.html index a3d0c04..e2f6b25 100644 --- a/index.html +++ b/index.html @@ -7,17 +7,17 @@ - - - DynamicObj + <title>DynamicObj | DynamicObj @@ -93,108 +93,108 @@
-

DynamicObj

-

The primary use case of DynamicObj is the extension of F# classes with dynamic properties. -This is useful when you want to add arbitrarily typed properties to a class at runtime.

-
-

Why would you want to do that?

-
-

Yes, The type system is one of the core strengths of F#, and it is awesome. -However, there are cases where a static domain model is either unfeasible or not flexible enough, especially when interfacing with dynamic languages such as JavaScript or Python.

-

DynamicObj is transpilable into JS and Python via Fable, meaning you can use it to create classes that are usable in both .NET and those languages, while making their usage (e.g., the setting of dynamic properties) both safe in .NET and idiomatic in JS/Python.

-

Get started

-
#r "nuget: Fable.Core" // Needed if working with Fable
-
-open DynamicObj
-open Fable.Core // Needed if working with Fable
-
-[<AttachMembers>] // AttachMembers needed if working with Fable
-type Person(id : int, name : string) =
-    
-    // Include this in your class
-    inherit DynamicObj()
-
-    // Mutable static property
-    let mutable _name = name
-    member this.Name
-        with get() = _name
-        and set(value) = _name <- value
-
-    // Immutable static property
-    member this.ID 
-        with get() = id
-
-let p = Person(1337,"John")
-
-

Accessing static and dynamic properties

-

Any class inheriting from DynamicObj can have static and dynamic properties, and both are accessible via various instance methods.

-

Access Static Properties:

-
p.Name
-
-
"John"
-
p.GetPropertyValue("Name")
-
-
"John"
-

Overwrite mutable static property

-
p.SetProperty("Name","Jane")
-p.GetPropertyValue("Name")
-
-
"Jane"
-

You cannot overwrite mutable static properties

-
p.SetProperty("ID",1234) // throws an excpection
-
-
p.GetPropertyValue("ID")
-
-
1337
-

Set dynamic properties

-
p.SetProperty("Address","FunStreet")
-p.GetPropertyValue("Address")
-
-
"FunStreet"
-

Safe and typed access to dynamic properties

-

Note that all properties returted by GetPropertyValue are boxed in .NET.

-

If you want to get the value in a typed manner, you can use the TryGetTypedPropertyValue method:

-
p.TryGetTypedPropertyValue<string>("Name")
-
-
Some "Jane"
-
p.TryGetTypedPropertyValue<int>("Name")
-
-
<null>
-
p.TryGetTypedPropertyValue<string>("I Do Not Exist")
-
-
<null>
-

Attention: the TryGetTypedPropertyValue<'T> method is not transpilable via Fable as it can only provide access to the types known at transpilation. -However, You can use the respective module function to transpile typed dynamic member access.

-

The DynObj module

-

This module provides a lot of API functions that are not not desired as static methods on DynamicObj, as it would be confusing if they ended up on inheriting classes.

-

It also supports pipeline chaining.

-
p
-|> DynObj.tryGetTypedPropertyValue<int> "ID"
-
-
Some 1337
-
p
-|> DynObj.withProperty "Another" "prop"
-|> DynObj.withProperty "Yes" 42
-|> DynObj.withoutProperty "Address"
-|> DynObj.withOptionalProperty "Maybe" (Some "yes")
-|> DynObj.withOptionalProperty "Maybe not" None
-|> DynObj.format
-
-
"Name: Jane
-ID: 1337
-?Maybe: yes
-?Another: prop
-?Yes: 42"
-

Serialization

-

Serialization to a JSON string that contains both static and dynamic properties is supported out-of-the-box when using Newtonsoft.Json:

-
#r "nuget: Newtonsoft.Json"
-
-open Newtonsoft.Json
-
-p
-|> JsonConvert.SerializeObject
-
-
"{"Name":"Jane","ID":1337,"Maybe":"yes","Another":"prop","Yes":42}"
+

DynamicObj

+

The primary use case of DynamicObj is the extension of F# classes with dynamic properties. +This is useful when you want to add arbitrarily typed properties to a class at runtime.

+
+

Why would you want to do that?

+
+

Yes, The type system is one of the core strengths of F#, and it is awesome. +However, there are cases where a static domain model is either unfeasible or not flexible enough, especially when interfacing with dynamic languages such as JavaScript or Python.

+

DynamicObj is transpilable into JS and Python via Fable, meaning you can use it to create classes that are usable in both .NET and those languages, while making their usage (e.g., the setting of dynamic properties) both safe in .NET and idiomatic in JS/Python.

+

Get started

+
#r "nuget: Fable.Core" // Needed if working with Fable
+
+open DynamicObj
+open Fable.Core // Needed if working with Fable
+
+[<AttachMembers>] // AttachMembers needed if working with Fable
+type Person(id : int, name : string) =
+    
+    // Include this in your class
+    inherit DynamicObj()
+
+    // Mutable static property
+    let mutable _name = name
+    member this.Name
+        with get() = _name
+        and set(value) = _name <- value
+
+    // Immutable static property
+    member this.ID 
+        with get() = id
+
+let p = Person(1337,"John")
+
+

Accessing static and dynamic properties

+

Any class inheriting from DynamicObj can have static and dynamic properties, and both are accessible via various instance methods.

+

Access Static Properties:

+
p.Name
+
+
"John"
+
p.GetPropertyValue("Name")
+
+
"John"
+

Overwrite mutable static property

+
p.SetProperty("Name","Jane")
+p.GetPropertyValue("Name")
+
+
"Jane"
+

You cannot overwrite mutable static properties

+
p.SetProperty("ID",1234) // throws an excpection
+
+
p.GetPropertyValue("ID")
+
+
1337
+

Set dynamic properties

+
p.SetProperty("Address","FunStreet")
+p.GetPropertyValue("Address")
+
+
"FunStreet"
+

Safe and typed access to dynamic properties

+

Note that all properties returted by GetPropertyValue are boxed in .NET.

+

If you want to get the value in a typed manner, you can use the TryGetTypedPropertyValue method:

+
p.TryGetTypedPropertyValue<string>("Name")
+
+
Some "Jane"
+
p.TryGetTypedPropertyValue<int>("Name")
+
+
<null>
+
p.TryGetTypedPropertyValue<string>("I Do Not Exist")
+
+
<null>
+

Attention: the TryGetTypedPropertyValue<'T> method is not transpilable via Fable as it can only provide access to the types known at transpilation. +However, You can use the respective module function to transpile typed dynamic member access.

+

The DynObj module

+

This module provides a lot of API functions that are not not desired as static methods on DynamicObj, as it would be confusing if they ended up on inheriting classes.

+

It also supports pipeline chaining.

+
p
+|> DynObj.tryGetTypedPropertyValue<int> "ID"
+
+
Some 1337
+
p
+|> DynObj.withProperty "Another" "prop"
+|> DynObj.withProperty "Yes" 42
+|> DynObj.withoutProperty "Address"
+|> DynObj.withOptionalProperty "Maybe" (Some "yes")
+|> DynObj.withOptionalProperty "Maybe not" None
+|> DynObj.format
+
+
"Name: Jane
+ID: 1337
+?Maybe: yes
+?Another: prop
+?Yes: 42"
+

Serialization

+

Serialization to a JSON string that contains both static and dynamic properties is supported out-of-the-box when using Newtonsoft.Json:

+
#r "nuget: Newtonsoft.Json"
+
+open Newtonsoft.Json
+
+p
+|> JsonConvert.SerializeObject
+
+
"{"Name":"Jane","ID":1337,"Maybe":"yes","Another":"prop","Yes":42}"
Multiple items
namespace DynamicObj

--------------------
type DynamicObj = inherit DynamicObject @@ -207,63 +207,63 @@

Serialization
--------------------
new: unit -> DynamicObj

-
namespace Fable
-
namespace Fable.Core
+ ...

--------------------
new: unit -> DynamicObj
+
namespace Fable
+
namespace Fable.Core
Multiple items
type AttachMembersAttribute = inherit Attribute new: unit -> AttachMembersAttribute
<summary> Used on a class to attach all members, useful when you want to use the class from JS. -</summary>

--------------------
new: unit -> AttachMembersAttribute
+</summary>

--------------------
new: unit -> AttachMembersAttribute
Multiple items
type Person = inherit DynamicObj new: id: int * name: string -> Person member ID: int - member Name: string with get, set

--------------------
new: id: int * name: string -> Person
-
val id: int
+ member Name: string with get, set

--------------------
new: id: int * name: string -> Person +
val id: int
Multiple items
val int: value: 'T -> int (requires member op_Explicit)

--------------------
type int = int32

--------------------
type int<'Measure> = - int
-
val name: string
-
Multiple items
val string: value: 'T -> string

--------------------
type string = System.String
-
val mutable _name: string
-
val this: Person
-
property Person.Name: string with get, set
-
val set: elements: 'T seq -> Set<'T> (requires comparison)
-
val value: string
-
val p: Person
-
member DynamicObj.GetPropertyValue: propertyName: string -> obj
-
member DynamicObj.SetProperty: propertyName: string * propertyValue: obj -> unit
-
member DynamicObj.TryGetTypedPropertyValue: propertyName: string -> 'TPropertyValue option
+ int +
val name: string
+
Multiple items
val string: value: 'T -> string

--------------------
type string = System.String
+
val mutable _name: string
+
val this: Person
+
property Person.Name: string with get, set
+
val set: elements: 'T seq -> Set<'T> (requires comparison)
+
val value: string
+
val p: Person
+
member DynamicObj.GetPropertyValue: propertyName: string -> obj
+
member DynamicObj.SetProperty: propertyName: string * propertyValue: obj -> unit
+
member DynamicObj.TryGetTypedPropertyValue: propertyName: string -> 'TPropertyValue option
module DynObj -from DynamicObj
<summary> - This module contains lots of API functions for DynamicObj. - - These functions are not static methods on the DynamicObj type itself because that type is designed to be inherited from, - and a lot of these functions might not make sense as static methods on inheriting types. - </summary>
-
val tryGetTypedPropertyValue: propertyName: string -> dynObj: DynamicObj -> 'TPropertyValue option
<summary> - Returns Some('TPropertyValue) when a dynamic (or static) property with the given name and type exists on the input, otherwise None. - </summary>
<param name="propertyName">the name of the property to get</param>
<param name="dynObj">the input DynamicObj</param>
-
val withProperty: propertyName: string -> propertyValue: 'TPropertyValue -> dynObj: 'a -> 'a (requires 'a :> DynamicObj)
<summary> - Sets the dynamic (or static) property value with the given name, creating a new dynamic property if none exists on the given DynamicObj and returns it. - </summary>
<param name="propertyName">The name of the property to set</param>
<param name="propertyValue">The value of the property to set</param>
<param name="dynObj">The DynamicObj to set the property on</param>
<remarks>This function mutates the input DynamicObj</remarks>
-
val withoutProperty: propertyName: string -> dynObj: 'a -> 'a (requires 'a :> DynamicObj)
<summary> - Removes any dynamic property with the given name from the input DynamicObj and returns it. - If the property is static and mutable, it will be set to null. - Static immutable properties cannot be removed. - </summary>
<param name="propertyName">The name of the property to remove</param>
<param name="dynObj">The DynamicObj to remove the property from</param>
<remarks>This function mutates the input DynamicObj</remarks>
<exception cref="System.MemberAccessException">Thrown if the dynamic property does not exist</exception>
-
val withOptionalProperty: propertyName: string -> propertyValue: 'TPropertyValue option -> dynObj: 'a -> 'a (requires 'a :> DynamicObj)
<summary> - Sets the dynamic (or static) property value with the given name on the given DynamicObj if the value is Some('TPropertyValue), creating a new dynamic property if none exists, and returns it. - If the given propertyValue is None, does nothing to the input DynamicObj. - </summary>
<param name="propertyName">The name of the property to set</param>
<param name="propertyValue">The value of the property to set</param>
<param name="dynObj">The DynamicObj to set the property on</param>
<remarks>This function mutates the input DynamicObj</remarks>
-
union case Option.Some: Value: 'T -> Option<'T>
-
union case Option.None: Option<'T>
-
val format: dynObj: DynamicObj -> string
<summary> - Returns a formatted string containing all static and dynamic properties of the given DynamicObj - </summary>
<param name="dynObj">The DynamicObj for which to generate a formatted string for</param>
-
namespace Newtonsoft
-
namespace Newtonsoft.Json
+from DynamicObj
<summary> + This module contains lots of API functions for DynamicObj. + + These functions are not static methods on the DynamicObj type itself because that type is designed to be inherited from, + and a lot of these functions might not make sense as static methods on inheriting types. + </summary> +
val tryGetTypedPropertyValue: propertyName: string -> dynObj: DynamicObj -> 'TPropertyValue option
<summary> + Returns Some('TPropertyValue) when a dynamic (or static) property with the given name and type exists on the input, otherwise None. + </summary>
<param name="propertyName">the name of the property to get</param>
<param name="dynObj">the input DynamicObj</param>
+
val withProperty: propertyName: string -> propertyValue: 'TPropertyValue -> dynObj: 'a -> 'a (requires 'a :> DynamicObj)
<summary> + Sets the dynamic (or static) property value with the given name, creating a new dynamic property if none exists on the given DynamicObj and returns it. + </summary>
<param name="propertyName">The name of the property to set</param>
<param name="propertyValue">The value of the property to set</param>
<param name="dynObj">The DynamicObj to set the property on</param>
<remarks>This function mutates the input DynamicObj</remarks>
+
val withoutProperty: propertyName: string -> dynObj: 'a -> 'a (requires 'a :> DynamicObj)
<summary> + Removes any dynamic property with the given name from the input DynamicObj and returns it. + If the property is static and mutable, it will be set to null. + Static immutable properties cannot be removed. + </summary>
<param name="propertyName">The name of the property to remove</param>
<param name="dynObj">The DynamicObj to remove the property from</param>
<remarks>This function mutates the input DynamicObj</remarks>
<exception cref="System.MemberAccessException">Thrown if the dynamic property does not exist</exception>
+
val withOptionalProperty: propertyName: string -> propertyValue: 'TPropertyValue option -> dynObj: 'a -> 'a (requires 'a :> DynamicObj)
<summary> + Sets the dynamic (or static) property value with the given name on the given DynamicObj if the value is Some('TPropertyValue), creating a new dynamic property if none exists, and returns it. + If the given propertyValue is None, does nothing to the input DynamicObj. + </summary>
<param name="propertyName">The name of the property to set</param>
<param name="propertyValue">The value of the property to set</param>
<param name="dynObj">The DynamicObj to set the property on</param>
<remarks>This function mutates the input DynamicObj</remarks>
+
union case Option.Some: Value: 'T -> Option<'T>
+
union case Option.None: Option<'T>
+
val format: dynObj: DynamicObj -> string
<summary> + Returns a formatted string containing all static and dynamic properties of the given DynamicObj + </summary>
<param name="dynObj">The DynamicObj for which to generate a formatted string for</param>
+
namespace Newtonsoft
+
namespace Newtonsoft.Json
-
JsonConvert.SerializeObject(value: obj) : string
JsonConvert.SerializeObject(value: obj, settings: JsonSerializerSettings) : string
JsonConvert.SerializeObject(value: obj, [<System.ParamArray>] converters: JsonConverter array) : string
JsonConvert.SerializeObject(value: obj, formatting: Formatting) : string
JsonConvert.SerializeObject(value: obj, formatting: Formatting, settings: JsonSerializerSettings) : string
JsonConvert.SerializeObject(value: obj, ``type`` : System.Type, settings: JsonSerializerSettings) : string
JsonConvert.SerializeObject(value: obj, formatting: Formatting, [<System.ParamArray>] converters: JsonConverter array) : string
JsonConvert.SerializeObject(value: obj, ``type`` : System.Type, formatting: Formatting, settings: JsonSerializerSettings) : string
+ </summary>
<example><code lang="cs" source="..\Src\Newtonsoft.Json.Tests\Documentation\SerializationTests.cs" region="SerializeObject" title="Serializing and Deserializing JSON with JsonConvert" /></example> +
JsonConvert.SerializeObject(value: obj) : string
JsonConvert.SerializeObject(value: obj, settings: JsonSerializerSettings) : string
JsonConvert.SerializeObject(value: obj, [<System.ParamArray>] converters: JsonConverter array) : string
JsonConvert.SerializeObject(value: obj, formatting: Formatting) : string
JsonConvert.SerializeObject(value: obj, formatting: Formatting, settings: JsonSerializerSettings) : string
JsonConvert.SerializeObject(value: obj, ``type`` : System.Type, settings: JsonSerializerSettings) : string
JsonConvert.SerializeObject(value: obj, formatting: Formatting, [<System.ParamArray>] converters: JsonConverter array) : string
JsonConvert.SerializeObject(value: obj, ``type`` : System.Type, formatting: Formatting, settings: JsonSerializerSettings) : string
diff --git a/index.json b/index.json index 66714da..35f945c 100644 --- a/index.json +++ b/index.json @@ -1 +1 @@ -[{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj.html","title":"DynamicObj","content":"DynObj \nFableJS \nFablePy \nHashCodes \nReflectionUtils \nCopyUtils \nDynamicObj \nHashUtils \nPropertyHelper \nOperators \nImmutableDynamicObj \nImmutableDynamicObjExtensions \nImmutableDynamicObjJsonConverter","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-dynobj.html","title":"DynObj","content":"DynObj \n This module contains lots of API functions for DynamicObj. \n\n These functions are not static methods on the DynamicObj type itself because that type is designed to be inherited from, \n and a lot of these functions might not make sense as static methods on inheriting types. \nDynObj.ofDict \nofDict \nDynObj.ofSeq \nofSeq \nDynObj.ofList \nofList \nDynObj.ofArray \nofArray \nDynObj.combine \ncombine \nDynObj.tryGetTypedPropertyValue \ntryGetTypedPropertyValue \nDynObj.setProperty \nsetProperty \nDynObj.withProperty \nwithProperty \nDynObj.setOptionalProperty \nsetOptionalProperty \nDynObj.withOptionalProperty \nwithOptionalProperty \nDynObj.setOptionalPropertyBy \nsetOptionalPropertyBy \nDynObj.withOptionalPropertyBy \nwithOptionalPropertyBy \nDynObj.tryGetPropertyValue \ntryGetPropertyValue \nDynObj.removeProperty \nremoveProperty \nDynObj.withoutProperty \nwithoutProperty \nDynObj.format \nformat \nDynObj.print \nprint \nDynObj.tryDeepCopyObj \ntryDeepCopyObj","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-dynobj.html#ofDict","title":"DynObj.ofDict","content":"DynObj.ofDict \nofDict \n\n Creates a new DynamicObj from a Dictionary containing dynamic properties.\n ","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-dynobj.html#ofSeq","title":"DynObj.ofSeq","content":"DynObj.ofSeq \nofSeq \n\n Creates a new DynamicObj from a sequence of key value pairs containing dynamic properties.\n ","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-dynobj.html#ofList","title":"DynObj.ofList","content":"DynObj.ofList \nofList \n\n Creates a new DynamicObj from a list of key value pairs containing dynamic properties.\n ","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-dynobj.html#ofArray","title":"DynObj.ofArray","content":"DynObj.ofArray \nofArray \n\n Creates a new DynamicObj from an array of key value pairs containing dynamic properties.\n ","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-dynobj.html#combine","title":"DynObj.combine","content":"DynObj.combine \ncombine \n\n Combines the dynamic properties of the second DynamicObj onto the first. \n\n In case of duplicate property names the members of the second object override those of the first.\n \nThis function mutates the first input DynamicObj","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-dynobj.html#tryGetTypedPropertyValue","title":"DynObj.tryGetTypedPropertyValue","content":"DynObj.tryGetTypedPropertyValue \ntryGetTypedPropertyValue \n\n Returns Some(\u0027TPropertyValue) when a dynamic (or static) property with the given name and type exists on the input, otherwise None.\n ","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-dynobj.html#setProperty","title":"DynObj.setProperty","content":"DynObj.setProperty \nsetProperty \n\n Sets the dynamic (or static) property value with the given name on the given DynamicObj, creating a new dynamic property if none exists.\n \nThis function mutates the input DynamicObj","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-dynobj.html#withProperty","title":"DynObj.withProperty","content":"DynObj.withProperty \nwithProperty \n\n Sets the dynamic (or static) property value with the given name, creating a new dynamic property if none exists on the given DynamicObj and returns it.\n \nThis function mutates the input DynamicObj","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-dynobj.html#setOptionalProperty","title":"DynObj.setOptionalProperty","content":"DynObj.setOptionalProperty \nsetOptionalProperty \n\n Sets the dynamic (or static) property value with the given name on the given DynamicObj if the value is Some(\u0027TPropertyValue), creating a new dynamic property if none exists.\n If the given propertyValue is None, does nothing to the input DynamicObj.\n \nThis function mutates the input DynamicObj","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-dynobj.html#withOptionalProperty","title":"DynObj.withOptionalProperty","content":"DynObj.withOptionalProperty \nwithOptionalProperty \n\n Sets the dynamic (or static) property value with the given name on the given DynamicObj if the value is Some(\u0027TPropertyValue), creating a new dynamic property if none exists, and returns it.\n If the given propertyValue is None, does nothing to the input DynamicObj.\n \nThis function mutates the input DynamicObj","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-dynobj.html#setOptionalPropertyBy","title":"DynObj.setOptionalPropertyBy","content":"DynObj.setOptionalPropertyBy \nsetOptionalPropertyBy \n\n Sets the given dynamic (or static) property with the result of a mapping function applied to the given property value on the given DynamicObj if the value is Some(\u0027TPropertyValue).\n If the given propertyValue is None, does nothing to the input DynamicObj.\n \nThis function mutates the input DynamicObj","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-dynobj.html#withOptionalPropertyBy","title":"DynObj.withOptionalPropertyBy","content":"DynObj.withOptionalPropertyBy \nwithOptionalPropertyBy \n\n Sets the given dynamic (or static) property with the result of a mapping function applied to the given property value on the given DynamicObj if the value is Some(\u0027TPropertyValue) and returns it.\n If the given propertyValue is None, returns the unchanged DynamicObj.\n \nThis function mutates the input DynamicObj","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-dynobj.html#tryGetPropertyValue","title":"DynObj.tryGetPropertyValue","content":"DynObj.tryGetPropertyValue \ntryGetPropertyValue \n\n Returns Some(boxed property value) if a dynamic (or static) property with the given name exists on the input, otherwise None.\n ","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-dynobj.html#removeProperty","title":"DynObj.removeProperty","content":"DynObj.removeProperty \nremoveProperty \n\n Removes any dynamic property with the given name from the input DynamicObj.\n If the property is static and mutable, it will be set to null.\n Static immutable properties cannot be removed.\n \nThis function mutates the input DynamicObj","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-dynobj.html#withoutProperty","title":"DynObj.withoutProperty","content":"DynObj.withoutProperty \nwithoutProperty \n\n Removes any dynamic property with the given name from the input DynamicObj and returns it.\n If the property is static and mutable, it will be set to null.\n Static immutable properties cannot be removed.\n \nThis function mutates the input DynamicObj","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-dynobj.html#format","title":"DynObj.format","content":"DynObj.format \nformat \n\n Returns a formatted string containing all static and dynamic properties of the given DynamicObj\n ","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-dynobj.html#print","title":"DynObj.print","content":"DynObj.print \nprint \n\n Prints a formatted string containing all static and dynamic properties of the given DynamicObj\n ","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-dynobj.html#tryDeepCopyObj","title":"DynObj.tryDeepCopyObj","content":"DynObj.tryDeepCopyObj \ntryDeepCopyObj \n\n function to deep copy a boxed object (if possible)\n\n The following cases are handled (in this precedence):\n\n - Basic F# types (\u0060bool\u0060, \u0060byte\u0060, \u0060sbyte\u0060, \u0060int16\u0060, \u0060uint16\u0060, \u0060int\u0060, \u0060uint\u0060, \u0060int64\u0060, \u0060uint64\u0060, \u0060nativeint\u0060, \u0060unativeint\u0060, \u0060float\u0060, \u0060float32\u0060, \u0060char\u0060, \u0060string\u0060, \u0060unit\u0060, \u0060decimal\u0060)\n \n - \u0060ResizeArrays\u0060 and \u0060Dictionaries\u0060 containing any combination of basic F# types\n \n - \u0060Dictionaries\u0060 containing \u0060DynamicObj\u0060 as keys or values in any combination with \u0060DynamicObj\u0060 or basic F# types as keys or values\n \n - \u0060array\u003CDynamicObj\u003E\u0060, \u0060list\u003CDynamicObj\u003E\u0060, \u0060ResizeArray\u003CDynamicObj\u003E\u0060: These collections of DynamicObj are copied as a new collection with recursively deep copied elements.\n \n - \u0060System.ICloneable\u0060: If the property implements \u0060ICloneable\u0060, the \u0060Clone()\u0060 method is called on the property.\n \n - \u0060DynamicObj\u0060 (and derived classes): properties that are themselves \u0060DynamicObj\u0060 instances are deep copied recursively.\n if a derived class has static properties (e.g. instance properties), these can be copied as dynamic properties on the new instance or ignored.\n \n Note on Classes that inherit from \u0060DynamicObj\u0060:\n \n Classes that inherit from DynamicObj will match the \u0060DynamicObj\u0060 typecheck if they do not implement \u0060ICloneable\u0060.\n The deep copied instances will be cast to \u0060DynamicObj\u0060 with deep copied dynamic properties. Staic/instance properties can be copied as dynamic properties on the new instance or be ignored.\n It should be possible to \u0027recover\u0027 the original type by checking if the needed properties exist as dynamic properties,\n and then passing them to the class constructor if needed.\n ","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-fablejs.html","title":"FableJS","content":"FableJS \n \nFableJS.Dictionaries \nDictionaries \nFableJS.Interfaces \nInterfaces \nFableJS.PropertyDescriptor \nPropertyDescriptor \nFableJS.getOwnPropertyNames \ngetOwnPropertyNames \nFableJS.getPrototype \ngetPrototype \nFableJS.getStaticPropertyNames \ngetStaticPropertyNames \nFableJS.setPropertyValue \nsetPropertyValue \nFableJS.createSetter \ncreateSetter \nFableJS.removeStaticPropertyValue \nremoveStaticPropertyValue \nFableJS.deleteDynamicPropertyValue \ndeleteDynamicPropertyValue \nFableJS.createRemover \ncreateRemover \nFableJS.getPropertyValue \ngetPropertyValue \nFableJS.createGetter \ncreateGetter \nFableJS.tryGetPropertyDescriptor \ntryGetPropertyDescriptor \nFableJS.tryGetStaticPropertyDescriptor \ntryGetStaticPropertyDescriptor \nFableJS.tryStaticPropertyHelperFromDescriptor \ntryStaticPropertyHelperFromDescriptor \nFableJS.tryGetStaticPropertyHelper \ntryGetStaticPropertyHelper \nFableJS.getStaticPropertyHelpers \ngetStaticPropertyHelpers \nFableJS.tryGetDynamicPropertyDescriptor \ntryGetDynamicPropertyDescriptor \nFableJS.transpiledPropertyRegex \ntranspiledPropertyRegex \nFableJS.isTranspiledPropertyHelper \nisTranspiledPropertyHelper \nFableJS.tryDynamicPropertyHelperFromDescriptor \ntryDynamicPropertyHelperFromDescriptor \nFableJS.tryGetDynamicPropertyHelper \ntryGetDynamicPropertyHelper \nFableJS.getDynamicPropertyHelpers \ngetDynamicPropertyHelpers \nFableJS.getPropertyHelpers \ngetPropertyHelpers \nFableJS.getPropertyNames \ngetPropertyNames","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-fablejs.html#getOwnPropertyNames","title":"FableJS.getOwnPropertyNames","content":"FableJS.getOwnPropertyNames \ngetOwnPropertyNames \n","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-fablejs.html#getPrototype","title":"FableJS.getPrototype","content":"FableJS.getPrototype \ngetPrototype \n","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-fablejs.html#getStaticPropertyNames","title":"FableJS.getStaticPropertyNames","content":"FableJS.getStaticPropertyNames \ngetStaticPropertyNames \n","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-fablejs.html#setPropertyValue","title":"FableJS.setPropertyValue","content":"FableJS.setPropertyValue \nsetPropertyValue \n","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-fablejs.html#createSetter","title":"FableJS.createSetter","content":"FableJS.createSetter \ncreateSetter \n","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-fablejs.html#removeStaticPropertyValue","title":"FableJS.removeStaticPropertyValue","content":"FableJS.removeStaticPropertyValue \nremoveStaticPropertyValue \n","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-fablejs.html#deleteDynamicPropertyValue","title":"FableJS.deleteDynamicPropertyValue","content":"FableJS.deleteDynamicPropertyValue \ndeleteDynamicPropertyValue \n","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-fablejs.html#createRemover","title":"FableJS.createRemover","content":"FableJS.createRemover \ncreateRemover \n","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-fablejs.html#getPropertyValue","title":"FableJS.getPropertyValue","content":"FableJS.getPropertyValue \ngetPropertyValue \n","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-fablejs.html#createGetter","title":"FableJS.createGetter","content":"FableJS.createGetter \ncreateGetter \n","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-fablejs.html#tryGetPropertyDescriptor","title":"FableJS.tryGetPropertyDescriptor","content":"FableJS.tryGetPropertyDescriptor \ntryGetPropertyDescriptor \n","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-fablejs.html#tryGetStaticPropertyDescriptor","title":"FableJS.tryGetStaticPropertyDescriptor","content":"FableJS.tryGetStaticPropertyDescriptor \ntryGetStaticPropertyDescriptor \n","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-fablejs.html#tryStaticPropertyHelperFromDescriptor","title":"FableJS.tryStaticPropertyHelperFromDescriptor","content":"FableJS.tryStaticPropertyHelperFromDescriptor \ntryStaticPropertyHelperFromDescriptor \n","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-fablejs.html#tryGetStaticPropertyHelper","title":"FableJS.tryGetStaticPropertyHelper","content":"FableJS.tryGetStaticPropertyHelper \ntryGetStaticPropertyHelper \n","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-fablejs.html#getStaticPropertyHelpers","title":"FableJS.getStaticPropertyHelpers","content":"FableJS.getStaticPropertyHelpers \ngetStaticPropertyHelpers \n","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-fablejs.html#tryGetDynamicPropertyDescriptor","title":"FableJS.tryGetDynamicPropertyDescriptor","content":"FableJS.tryGetDynamicPropertyDescriptor \ntryGetDynamicPropertyDescriptor \n","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-fablejs.html#transpiledPropertyRegex","title":"FableJS.transpiledPropertyRegex","content":"FableJS.transpiledPropertyRegex \ntranspiledPropertyRegex \n","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-fablejs.html#isTranspiledPropertyHelper","title":"FableJS.isTranspiledPropertyHelper","content":"FableJS.isTranspiledPropertyHelper \nisTranspiledPropertyHelper \n","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-fablejs.html#tryDynamicPropertyHelperFromDescriptor","title":"FableJS.tryDynamicPropertyHelperFromDescriptor","content":"FableJS.tryDynamicPropertyHelperFromDescriptor \ntryDynamicPropertyHelperFromDescriptor \n","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-fablejs.html#tryGetDynamicPropertyHelper","title":"FableJS.tryGetDynamicPropertyHelper","content":"FableJS.tryGetDynamicPropertyHelper \ntryGetDynamicPropertyHelper \n","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-fablejs.html#getDynamicPropertyHelpers","title":"FableJS.getDynamicPropertyHelpers","content":"FableJS.getDynamicPropertyHelpers \ngetDynamicPropertyHelpers \n","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-fablejs.html#getPropertyHelpers","title":"FableJS.getPropertyHelpers","content":"FableJS.getPropertyHelpers \ngetPropertyHelpers \n","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-fablejs.html#getPropertyNames","title":"FableJS.getPropertyNames","content":"FableJS.getPropertyNames \ngetPropertyNames \n","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-fablejs-dictionaries.html","title":"Dictionaries","content":"Dictionaries \n \nDictionaries.isMap \nisMap \nDictionaries.isDict \nisDict","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-fablejs-dictionaries.html#isMap","title":"Dictionaries.isMap","content":"Dictionaries.isMap \nisMap \n","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-fablejs-dictionaries.html#isDict","title":"Dictionaries.isDict","content":"Dictionaries.isDict \nisDict \n","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-fablejs-interfaces.html","title":"Interfaces","content":"Interfaces \n \nInterfaces.implementsICloneable \nimplementsICloneable \nInterfaces.cloneICloneable \ncloneICloneable","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-fablejs-interfaces.html#implementsICloneable","title":"Interfaces.implementsICloneable","content":"Interfaces.implementsICloneable \nimplementsICloneable \n","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-fablejs-interfaces.html#cloneICloneable","title":"Interfaces.cloneICloneable","content":"Interfaces.cloneICloneable \ncloneICloneable \n","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-fablejs-propertydescriptor.html","title":"PropertyDescriptor","content":"PropertyDescriptor \n \nPropertyDescriptor.tryGetPropertyValue \ntryGetPropertyValue \nPropertyDescriptor.tryGetIsWritable \ntryGetIsWritable \nPropertyDescriptor.containsGetter \ncontainsGetter \nPropertyDescriptor.containsSetter \ncontainsSetter \nPropertyDescriptor.isWritable \nisWritable \nPropertyDescriptor.valueIsFunction \nvalueIsFunction \nPropertyDescriptor.isFunction \nisFunction","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-fablejs-propertydescriptor.html#tryGetPropertyValue","title":"PropertyDescriptor.tryGetPropertyValue","content":"PropertyDescriptor.tryGetPropertyValue \ntryGetPropertyValue \n","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-fablejs-propertydescriptor.html#tryGetIsWritable","title":"PropertyDescriptor.tryGetIsWritable","content":"PropertyDescriptor.tryGetIsWritable \ntryGetIsWritable \n","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-fablejs-propertydescriptor.html#containsGetter","title":"PropertyDescriptor.containsGetter","content":"PropertyDescriptor.containsGetter \ncontainsGetter \n","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-fablejs-propertydescriptor.html#containsSetter","title":"PropertyDescriptor.containsSetter","content":"PropertyDescriptor.containsSetter \ncontainsSetter \n","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-fablejs-propertydescriptor.html#isWritable","title":"PropertyDescriptor.isWritable","content":"PropertyDescriptor.isWritable \nisWritable \n","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-fablejs-propertydescriptor.html#valueIsFunction","title":"PropertyDescriptor.valueIsFunction","content":"PropertyDescriptor.valueIsFunction \nvalueIsFunction \n","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-fablejs-propertydescriptor.html#isFunction","title":"PropertyDescriptor.isFunction","content":"PropertyDescriptor.isFunction \nisFunction \n","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-fablepy.html","title":"FablePy","content":"FablePy \n \nFablePy.Dictionaries \nDictionaries \nFablePy.Dictionary \nDictionary \nFablePy.Interfaces \nInterfaces \nFablePy.PropertyObject \nPropertyObject \nFablePy.PropertyObject \nPropertyObject \nFablePy.getPropertyValue \ngetPropertyValue \nFablePy.createGetter \ncreateGetter \nFablePy.setPropertyValue \nsetPropertyValue \nFablePy.createSetter \ncreateSetter \nFablePy.getOwnMemberObjects \ngetOwnMemberObjects \nFablePy.getClass \ngetClass \nFablePy.getStaticPropertyObjects \ngetStaticPropertyObjects \nFablePy.removeStaticPropertyValue \nremoveStaticPropertyValue \nFablePy.deleteDynamicPropertyValue \ndeleteDynamicPropertyValue \nFablePy.createRemover \ncreateRemover \nFablePy.getMemberObject \ngetMemberObject \nFablePy.tryGetPropertyObject \ntryGetPropertyObject \nFablePy.tryGetDynamicPropertyHelper \ntryGetDynamicPropertyHelper \nFablePy.tryGetStaticPropertyHelper \ntryGetStaticPropertyHelper \nFablePy.transpiledPropertyRegex \ntranspiledPropertyRegex \nFablePy.isTranspiledPropertyHelper \nisTranspiledPropertyHelper \nFablePy.getDynamicPropertyHelpers \ngetDynamicPropertyHelpers \nFablePy.getStaticPropertyHelpers \ngetStaticPropertyHelpers \nFablePy.getPropertyHelpers \ngetPropertyHelpers \nFablePy.getPropertyNames \ngetPropertyNames","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-fablepy.html#getPropertyValue","title":"FablePy.getPropertyValue","content":"FablePy.getPropertyValue \ngetPropertyValue \n","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-fablepy.html#createGetter","title":"FablePy.createGetter","content":"FablePy.createGetter \ncreateGetter \n","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-fablepy.html#setPropertyValue","title":"FablePy.setPropertyValue","content":"FablePy.setPropertyValue \nsetPropertyValue \n","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-fablepy.html#createSetter","title":"FablePy.createSetter","content":"FablePy.createSetter \ncreateSetter \n","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-fablepy.html#getOwnMemberObjects","title":"FablePy.getOwnMemberObjects","content":"FablePy.getOwnMemberObjects \ngetOwnMemberObjects \n","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-fablepy.html#getClass","title":"FablePy.getClass","content":"FablePy.getClass \ngetClass \n","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-fablepy.html#getStaticPropertyObjects","title":"FablePy.getStaticPropertyObjects","content":"FablePy.getStaticPropertyObjects \ngetStaticPropertyObjects \n","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-fablepy.html#removeStaticPropertyValue","title":"FablePy.removeStaticPropertyValue","content":"FablePy.removeStaticPropertyValue \nremoveStaticPropertyValue \n","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-fablepy.html#deleteDynamicPropertyValue","title":"FablePy.deleteDynamicPropertyValue","content":"FablePy.deleteDynamicPropertyValue \ndeleteDynamicPropertyValue \n","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-fablepy.html#createRemover","title":"FablePy.createRemover","content":"FablePy.createRemover \ncreateRemover \n","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-fablepy.html#getMemberObject","title":"FablePy.getMemberObject","content":"FablePy.getMemberObject \ngetMemberObject \n","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-fablepy.html#tryGetPropertyObject","title":"FablePy.tryGetPropertyObject","content":"FablePy.tryGetPropertyObject \ntryGetPropertyObject \n","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-fablepy.html#tryGetDynamicPropertyHelper","title":"FablePy.tryGetDynamicPropertyHelper","content":"FablePy.tryGetDynamicPropertyHelper \ntryGetDynamicPropertyHelper \n","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-fablepy.html#tryGetStaticPropertyHelper","title":"FablePy.tryGetStaticPropertyHelper","content":"FablePy.tryGetStaticPropertyHelper \ntryGetStaticPropertyHelper \n","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-fablepy.html#transpiledPropertyRegex","title":"FablePy.transpiledPropertyRegex","content":"FablePy.transpiledPropertyRegex \ntranspiledPropertyRegex \n","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-fablepy.html#isTranspiledPropertyHelper","title":"FablePy.isTranspiledPropertyHelper","content":"FablePy.isTranspiledPropertyHelper \nisTranspiledPropertyHelper \n","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-fablepy.html#getDynamicPropertyHelpers","title":"FablePy.getDynamicPropertyHelpers","content":"FablePy.getDynamicPropertyHelpers \ngetDynamicPropertyHelpers \n","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-fablepy.html#getStaticPropertyHelpers","title":"FablePy.getStaticPropertyHelpers","content":"FablePy.getStaticPropertyHelpers \ngetStaticPropertyHelpers \n","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-fablepy.html#getPropertyHelpers","title":"FablePy.getPropertyHelpers","content":"FablePy.getPropertyHelpers \ngetPropertyHelpers \n","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-fablepy.html#getPropertyNames","title":"FablePy.getPropertyNames","content":"FablePy.getPropertyNames \ngetPropertyNames \n","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-fablepy-dictionaries.html","title":"Dictionaries","content":"Dictionaries \n \nDictionaries.isDict \nisDict","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-fablepy-dictionaries.html#isDict","title":"Dictionaries.isDict","content":"Dictionaries.isDict \nisDict \n","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-fablepy-dictionary.html","title":"Dictionary","content":"Dictionary \n \nDictionary.ofSeq \nofSeq \nDictionary.choose \nchoose","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-fablepy-dictionary.html#ofSeq","title":"Dictionary.ofSeq","content":"Dictionary.ofSeq \nofSeq \n","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-fablepy-dictionary.html#choose","title":"Dictionary.choose","content":"Dictionary.choose \nchoose \n","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-fablepy-interfaces.html","title":"Interfaces","content":"Interfaces \n \nInterfaces.implementsICloneable \nimplementsICloneable \nInterfaces.cloneICloneable \ncloneICloneable","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-fablepy-interfaces.html#implementsICloneable","title":"Interfaces.implementsICloneable","content":"Interfaces.implementsICloneable \nimplementsICloneable \n","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-fablepy-interfaces.html#cloneICloneable","title":"Interfaces.cloneICloneable","content":"Interfaces.cloneICloneable \ncloneICloneable \n","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-fablepy-propertyobjectmodule.html","title":"PropertyObject","content":"PropertyObject \n \nPropertyObject.tryGetGetter \ntryGetGetter \nPropertyObject.tryGetSetter \ntryGetSetter \nPropertyObject.getGetter \ngetGetter \nPropertyObject.getSetter \ngetSetter \nPropertyObject.containsGetter \ncontainsGetter \nPropertyObject.containsSetter \ncontainsSetter \nPropertyObject.isWritable \nisWritable \nPropertyObject.isProperty \nisProperty \nPropertyObject.tryProperty \ntryProperty","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-fablepy-propertyobjectmodule.html#tryGetGetter","title":"PropertyObject.tryGetGetter","content":"PropertyObject.tryGetGetter \ntryGetGetter \n","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-fablepy-propertyobjectmodule.html#tryGetSetter","title":"PropertyObject.tryGetSetter","content":"PropertyObject.tryGetSetter \ntryGetSetter \n","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-fablepy-propertyobjectmodule.html#getGetter","title":"PropertyObject.getGetter","content":"PropertyObject.getGetter \ngetGetter \n","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-fablepy-propertyobjectmodule.html#getSetter","title":"PropertyObject.getSetter","content":"PropertyObject.getSetter \ngetSetter \n","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-fablepy-propertyobjectmodule.html#containsGetter","title":"PropertyObject.containsGetter","content":"PropertyObject.containsGetter \ncontainsGetter \n","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-fablepy-propertyobjectmodule.html#containsSetter","title":"PropertyObject.containsSetter","content":"PropertyObject.containsSetter \ncontainsSetter \n","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-fablepy-propertyobjectmodule.html#isWritable","title":"PropertyObject.isWritable","content":"PropertyObject.isWritable \nisWritable \n","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-fablepy-propertyobjectmodule.html#isProperty","title":"PropertyObject.isProperty","content":"PropertyObject.isProperty \nisProperty \n","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-fablepy-propertyobjectmodule.html#tryProperty","title":"PropertyObject.tryProperty","content":"PropertyObject.tryProperty \ntryProperty \n","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-fablepy-propertyobject.html","title":"PropertyObject","content":"PropertyObject \n \nPropertyObject.fset \nfset \nPropertyObject.fget \nfget","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-fablepy-propertyobject.html#fset","title":"PropertyObject.fset","content":"PropertyObject.fset \nfset \n","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-fablepy-propertyobject.html#fget","title":"PropertyObject.fget","content":"PropertyObject.fget \nfget \n","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-hashcodes.html","title":"HashCodes","content":"HashCodes \n \nHashCodes.mergeHashes \nmergeHashes \nHashCodes.hashDateTime \nhashDateTime \nHashCodes.hash \nhash \nHashCodes.boxHashOption \nboxHashOption \nHashCodes.boxHashArray \nboxHashArray \nHashCodes.boxHashSeq \nboxHashSeq \nHashCodes.boxHashKeyValSeq \nboxHashKeyValSeq \nHashCodes.boxHashKeyValSeqBy \nboxHashKeyValSeqBy","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-hashcodes.html#mergeHashes","title":"HashCodes.mergeHashes","content":"HashCodes.mergeHashes \nmergeHashes \n","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-hashcodes.html#hashDateTime","title":"HashCodes.hashDateTime","content":"HashCodes.hashDateTime \nhashDateTime \n","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-hashcodes.html#hash","title":"HashCodes.hash","content":"HashCodes.hash \nhash \n","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-hashcodes.html#boxHashOption","title":"HashCodes.boxHashOption","content":"HashCodes.boxHashOption \nboxHashOption \n","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-hashcodes.html#boxHashArray","title":"HashCodes.boxHashArray","content":"HashCodes.boxHashArray \nboxHashArray \n","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-hashcodes.html#boxHashSeq","title":"HashCodes.boxHashSeq","content":"HashCodes.boxHashSeq \nboxHashSeq \n","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-hashcodes.html#boxHashKeyValSeq","title":"HashCodes.boxHashKeyValSeq","content":"HashCodes.boxHashKeyValSeq \nboxHashKeyValSeq \n","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-hashcodes.html#boxHashKeyValSeqBy","title":"HashCodes.boxHashKeyValSeqBy","content":"HashCodes.boxHashKeyValSeqBy \nboxHashKeyValSeqBy \n","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-reflectionutils.html","title":"ReflectionUtils","content":"ReflectionUtils \n \nReflectionUtils.getStaticProperties \ngetStaticProperties \nReflectionUtils.tryGetStaticPropertyInfo \ntryGetStaticPropertyInfo \nReflectionUtils.trySetPropertyValue \ntrySetPropertyValue \nReflectionUtils.tryGetPropertyValue \ntryGetPropertyValue \nReflectionUtils.tryGetPropertyValueAs \ntryGetPropertyValueAs \nReflectionUtils.removeProperty \nremoveProperty","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-reflectionutils.html#getStaticProperties","title":"ReflectionUtils.getStaticProperties","content":"ReflectionUtils.getStaticProperties \ngetStaticProperties \n","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-reflectionutils.html#tryGetStaticPropertyInfo","title":"ReflectionUtils.tryGetStaticPropertyInfo","content":"ReflectionUtils.tryGetStaticPropertyInfo \ntryGetStaticPropertyInfo \n Try to get the PropertyInfo by name using reflection","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-reflectionutils.html#trySetPropertyValue","title":"ReflectionUtils.trySetPropertyValue","content":"ReflectionUtils.trySetPropertyValue \ntrySetPropertyValue \n","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-reflectionutils.html#tryGetPropertyValue","title":"ReflectionUtils.tryGetPropertyValue","content":"ReflectionUtils.tryGetPropertyValue \ntryGetPropertyValue \n","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-reflectionutils.html#tryGetPropertyValueAs","title":"ReflectionUtils.tryGetPropertyValueAs","content":"ReflectionUtils.tryGetPropertyValueAs \ntryGetPropertyValueAs \n Gets property value as \u0027a option using reflection. Cast to \u0027a","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-reflectionutils.html#removeProperty","title":"ReflectionUtils.removeProperty","content":"ReflectionUtils.removeProperty \nremoveProperty \n","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-copyutils.html","title":"CopyUtils","content":"CopyUtils \n \nCopyUtils.tryDeepCopyObj \ntryDeepCopyObj","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-copyutils.html#tryDeepCopyObj","title":"CopyUtils.tryDeepCopyObj","content":"CopyUtils.tryDeepCopyObj \ntryDeepCopyObj \n\n function to deep copy a boxed object (if possible)\n The following cases are handled (in this precedence):\n\n - Basic F# types (\u0060bool\u0060, \u0060byte\u0060, \u0060sbyte\u0060, \u0060int16\u0060, \u0060uint16\u0060, \u0060int\u0060, \u0060uint\u0060, \u0060int64\u0060, \u0060uint64\u0060, \u0060nativeint\u0060, \u0060unativeint\u0060, \u0060float\u0060, \u0060float32\u0060, \u0060char\u0060, \u0060string\u0060, \u0060unit\u0060, \u0060decimal\u0060)\n \n - \u0060ResizeArrays\u0060 and \u0060Dictionaries\u0060 containing any combination of basic F# types\n \n - \u0060Dictionaries\u0060 containing \u0060DynamicObj\u0060 as keys or values in any combination with \u0060DynamicObj\u0060 or basic F# types as keys or values\n \n - \u0060array\u003CDynamicObj\u003E\u0060, \u0060list\u003CDynamicObj\u003E\u0060, \u0060ResizeArray\u003CDynamicObj\u003E\u0060: These collections of DynamicObj are copied as a new collection with recursively deep copied elements.\n \n - \u0060System.ICloneable\u0060: If the property implements \u0060ICloneable\u0060, the \u0060Clone()\u0060 method is called on the property.\n \n - \u0060DynamicObj\u0060 (and derived classes): properties that are themselves \u0060DynamicObj\u0060 instances are deep copied recursively.\n if a derived class has static properties (e.g. instance properties), these can be copied as dynamic properties on the new instance or ignored.\n \n Note on Classes that inherit from \u0060DynamicObj\u0060:\n \n Classes that inherit from DynamicObj will match the \u0060DynamicObj\u0060 typecheck if they do not implement \u0060ICloneable\u0060.\n The deep copied instances will be cast to \u0060DynamicObj\u0060 with deep copied dynamic properties. Staic/instance properties can be copied as dynamic properties on the new instance or be ignored.\n It should be possible to \u0027recover\u0027 the original type by checking if the needed properties exist as dynamic properties,\n and then passing them to the class constructor if needed.\n ","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-dynamicobj.html","title":"DynamicObj","content":"DynamicObj \n \nDynamicObj.\u0060\u0060.ctor\u0060\u0060 \n\u0060\u0060.ctor\u0060\u0060 \nDynamicObj.DeepCopyProperties \nDeepCopyProperties \nDynamicObj.DeepCopyPropertiesTo \nDeepCopyPropertiesTo \nDynamicObj.GetProperties \nGetProperties \nDynamicObj.GetPropertyHelpers \nGetPropertyHelpers \nDynamicObj.GetPropertyNames \nGetPropertyNames \nDynamicObj.GetPropertyValue \nGetPropertyValue \nDynamicObj.ReferenceEquals \nReferenceEquals \nDynamicObj.RemoveProperty \nRemoveProperty \nDynamicObj.SetProperty \nSetProperty \nDynamicObj.ShallowCopyDynamicProperties \nShallowCopyDynamicProperties \nDynamicObj.ShallowCopyDynamicPropertiesTo \nShallowCopyDynamicPropertiesTo \nDynamicObj.StructurallyEquals \nStructurallyEquals \nDynamicObj.TryGetDynamicPropertyHelper \nTryGetDynamicPropertyHelper \nDynamicObj.TryGetPropertyHelper \nTryGetPropertyHelper \nDynamicObj.TryGetPropertyValue \nTryGetPropertyValue \nDynamicObj.TryGetStaticPropertyHelper \nTryGetStaticPropertyHelper \nDynamicObj.TryGetTypedPropertyValue \nTryGetTypedPropertyValue \nDynamicObj.Properties \nProperties \nDynamicObj.ofDict \nofDict \nDynamicObj.(?) \n(?) \nDynamicObj.(?\u003C-) \n(?\u003C-)","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-dynamicobj.html#\u0060\u0060.ctor\u0060\u0060","title":"DynamicObj.\u0060\u0060.ctor\u0060\u0060","content":"DynamicObj.\u0060\u0060.ctor\u0060\u0060 \n\u0060\u0060.ctor\u0060\u0060 \n","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-dynamicobj.html#DeepCopyProperties","title":"DynamicObj.DeepCopyProperties","content":"DynamicObj.DeepCopyProperties \nDeepCopyProperties \n\n Recursively deep copy a \u0060DynamicObj\u0060 instance (or derived class) with **all** (static and dynamic) properties. Reinstantiation - and therefore prevention of reference equality - is possible for \u0060DynamicObj\u0060, \u0060array|list|ResizeArray\u003CDynamicObj\u003E\u0060, and classes implementing \u0060System.Icloneable\u0060\n \n On the deep copy, as many properties as possible are re-instantiated as new objects, meaning the \n copy has as little reference equal properties as possible.\n \n The nature of DynamicObj however means that it is impossible to reliably deep copy all properties, as\n their type is not known on runtime and the contructors of the types are not known.\n\n The following cases are handled (in this precedence):\n\n - Basic F# types (\u0060bool\u0060, \u0060byte\u0060, \u0060sbyte\u0060, \u0060int16\u0060, \u0060uint16\u0060, \u0060int\u0060, \u0060uint\u0060, \u0060int64\u0060, \u0060uint64\u0060, \u0060nativeint\u0060, \u0060unativeint\u0060, \u0060float\u0060, \u0060float32\u0060, \u0060char\u0060, \u0060string\u0060, \u0060unit\u0060, \u0060decimal\u0060)\n \n - \u0060ResizeArrays\u0060 and \u0060Dictionaries\u0060 containing any combination of basic F# types\n \n - \u0060Dictionaries\u0060 containing \u0060DynamicObj\u0060 as keys or values in any combination with \u0060DynamicObj\u0060 or basic F# types as keys or values\n \n - \u0060array\u003CDynamicObj\u003E\u0060, \u0060list\u003CDynamicObj\u003E\u0060, \u0060ResizeArray\u003CDynamicObj\u003E\u0060: These collections of DynamicObj are copied as a new collection with recursively deep copied elements.\n \n - \u0060System.ICloneable\u0060: If the property implements \u0060ICloneable\u0060, the \u0060Clone()\u0060 method is called on the property.\n \n - \u0060DynamicObj\u0060 (and derived classes): properties that are themselves \u0060DynamicObj\u0060 instances are deep copied recursively.\n if a derived class has static properties (e.g. instance properties), these can be copied as dynamic properties on the new instance or ignored.\n \n Note on Classes that inherit from \u0060DynamicObj\u0060:\n \n Classes that inherit from DynamicObj will match the \u0060DynamicObj\u0060 typecheck if they do not implement \u0060ICloneable\u0060.\n The deep copied instances will be cast to \u0060DynamicObj\u0060 with deep copied dynamic properties. Staic/instance properties can be copied as dynamic properties on the new instance or be ignored.\n It should be possible to \u0027recover\u0027 the original type by checking if the needed properties exist as dynamic properties,\n and then passing them to the class constructor if needed.\n ","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-dynamicobj.html#DeepCopyPropertiesTo","title":"DynamicObj.DeepCopyPropertiesTo","content":"DynamicObj.DeepCopyPropertiesTo \nDeepCopyPropertiesTo \n\n Recursively deep copies **all** (static and dynamic) properties to a **target** \u0060DynamicObj\u0060 instance (or derived class). Reinstantiation - and therefore prevention of reference equality - is possible for \u0060DynamicObj\u0060, \u0060array|list|ResizeArray\u003CDynamicObj\u003E\u0060, and classes implementing \u0060System.Icloneable\u0060\n \n As many properties as possible are re-instantiated as new objects, meaning the \n copy has as little reference equal properties as possible.\n \n The nature of DynamicObj however means that it is impossible to reliably deep copy all properties, as\n their type is not known on runtime and the contructors of the types are not known.\n\n The following cases are handled (in this precedence):\n\n - Basic F# types (\u0060bool\u0060, \u0060byte\u0060, \u0060sbyte\u0060, \u0060int16\u0060, \u0060uint16\u0060, \u0060int\u0060, \u0060uint\u0060, \u0060int64\u0060, \u0060uint64\u0060, \u0060nativeint\u0060, \u0060unativeint\u0060, \u0060float\u0060, \u0060float32\u0060, \u0060char\u0060, \u0060string\u0060, \u0060unit\u0060, \u0060decimal\u0060)\n \n - \u0060ResizeArrays\u0060 and \u0060Dictionaries\u0060 containing any combination of basic F# types\n \n - \u0060Dictionaries\u0060 containing \u0060DynamicObj\u0060 as keys or values in any combination with \u0060DynamicObj\u0060 or basic F# types as keys or values\n \n - \u0060array\u003CDynamicObj\u003E\u0060, \u0060list\u003CDynamicObj\u003E\u0060, \u0060ResizeArray\u003CDynamicObj\u003E\u0060: These collections of DynamicObj are copied as a new collection with recursively deep copied elements.\n \n - \u0060System.ICloneable\u0060: If the property implements \u0060ICloneable\u0060, the \u0060Clone()\u0060 method is called on the property.\n \n - \u0060DynamicObj\u0060 (and derived classes): properties that are themselves \u0060DynamicObj\u0060 instances are deep copied recursively.\n if a derived class has static properties (e.g. instance properties), these can be copied as dynamic properties on the new instance or ignored.\n \n Note on Classes that inherit from \u0060DynamicObj\u0060:\n \n Classes that inherit from DynamicObj will match the \u0060DynamicObj\u0060 typecheck if they do not implement \u0060ICloneable\u0060.\n The deep copied instances will be cast to \u0060DynamicObj\u0060 with deep copied dynamic properties. Staic/instance properties can be copied as dynamic properties on the new instance or be ignored.\n It should be possible to \u0027recover\u0027 the original type by checking if the needed properties exist as dynamic properties,\n and then passing them to the class constructor if needed.\n ","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-dynamicobj.html#GetProperties","title":"DynamicObj.GetProperties","content":"DynamicObj.GetProperties \nGetProperties \n\n Returns a sequence of all dynamic properties as a key value pair of the property names and the boxed property values.\n\n When includeInstanceProperties is set to true, instance properties (= \u0027static\u0027 properties on the class) are included in the result.\n ","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-dynamicobj.html#GetPropertyHelpers","title":"DynamicObj.GetPropertyHelpers","content":"DynamicObj.GetPropertyHelpers \nGetPropertyHelpers \n\n Returns PropertyHelpers for all dynamic properties of the DynamicObj.\n\n When includeInstanceProperties is set to true, instance properties (= \u0027static\u0027 properties on the class) are included in the result.\n ","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-dynamicobj.html#GetPropertyNames","title":"DynamicObj.GetPropertyNames","content":"DynamicObj.GetPropertyNames \nGetPropertyNames \n\n Returns a sequence of all dynamic property names.\n\n When includeInstanceProperties is set to true, instance properties (= \u0027static\u0027 properties on the class) are included in the result.\n ","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-dynamicobj.html#GetPropertyValue","title":"DynamicObj.GetPropertyValue","content":"DynamicObj.GetPropertyValue \nGetPropertyValue \n\n Returns the boxed property value of the dynamic (or static) property with the given name.\n ","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-dynamicobj.html#ReferenceEquals","title":"DynamicObj.ReferenceEquals","content":"DynamicObj.ReferenceEquals \nReferenceEquals \n","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-dynamicobj.html#RemoveProperty","title":"DynamicObj.RemoveProperty","content":"DynamicObj.RemoveProperty \nRemoveProperty \n\n Removes any dynamic property with the given name from the input DynamicObj.\n If the property is static and mutable, it will be set to null.\n Static immutable properties cannot be removed.\n ","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-dynamicobj.html#SetProperty","title":"DynamicObj.SetProperty","content":"DynamicObj.SetProperty \nSetProperty \n\n Sets the dynamic (or static) property value with the given name, creating a new dynamic property if none exists.\n ","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-dynamicobj.html#ShallowCopyDynamicProperties","title":"DynamicObj.ShallowCopyDynamicProperties","content":"DynamicObj.ShallowCopyDynamicProperties \nShallowCopyDynamicProperties \n Copies all dynamic properties to a new \u0060DynamicObj\u0060 instance without trying to prevent reference equality.\n\n Note that this function does not attempt to do any deep copying. \n The dynamic properties of the source will be copied as references to the target. \n If any of those properties are mutable or themselves DynamicObj instances, changes to the properties on the source will be reflected in the target.","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-dynamicobj.html#ShallowCopyDynamicPropertiesTo","title":"DynamicObj.ShallowCopyDynamicPropertiesTo","content":"DynamicObj.ShallowCopyDynamicPropertiesTo \nShallowCopyDynamicPropertiesTo \n\n Copies all dynamic properties to a target \u0060DynamicObj\u0060 instance without trying to prevent reference equality.\n\n Note that this function does not attempt to do any deep copying. \n The dynamic properties of the source will be copied as references to the target. \n If any of those properties are mutable or themselves DynamicObj instances, changes to the properties on the source will be reflected in the target.\n\n If overWrite is set to true, existing properties on the target object will be overwritten.\n ","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-dynamicobj.html#StructurallyEquals","title":"DynamicObj.StructurallyEquals","content":"DynamicObj.StructurallyEquals \nStructurallyEquals \n","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-dynamicobj.html#TryGetDynamicPropertyHelper","title":"DynamicObj.TryGetDynamicPropertyHelper","content":"DynamicObj.TryGetDynamicPropertyHelper \nTryGetDynamicPropertyHelper \n\n Returns Some(PropertyHelper) if a dynamic property with the given name exists, otherwise None.\n ","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-dynamicobj.html#TryGetPropertyHelper","title":"DynamicObj.TryGetPropertyHelper","content":"DynamicObj.TryGetPropertyHelper \nTryGetPropertyHelper \n\n Returns Some(PropertyHelper) if a property (static or dynamic) with the given name exists, otherwise None.\n ","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-dynamicobj.html#TryGetPropertyValue","title":"DynamicObj.TryGetPropertyValue","content":"DynamicObj.TryGetPropertyValue \nTryGetPropertyValue \n\n Returns Some(boxed property value) if a dynamic (or static) property with the given name exists, otherwise None.\n ","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-dynamicobj.html#TryGetStaticPropertyHelper","title":"DynamicObj.TryGetStaticPropertyHelper","content":"DynamicObj.TryGetStaticPropertyHelper \nTryGetStaticPropertyHelper \n\n Returns Some(PropertyHelper) if a static property with the given name exists, otherwise None.\n ","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-dynamicobj.html#TryGetTypedPropertyValue","title":"DynamicObj.TryGetTypedPropertyValue","content":"DynamicObj.TryGetTypedPropertyValue \nTryGetTypedPropertyValue \n\n Returns Some(\u0027TPropertyValue) when a dynamic (or static) property with the given name and type exists, otherwise None.\n\n This method is not Fable-compatible and can therefore not be used in code that will be transpiled.\n \nThis method is not Fable-compatible and can therefore not be used in code that will be transpiled.","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-dynamicobj.html#Properties","title":"DynamicObj.Properties","content":"DynamicObj.Properties \nProperties \n A dictionary of dynamic boxed properties","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-dynamicobj.html#ofDict","title":"DynamicObj.ofDict","content":"DynamicObj.ofDict \nofDict \n\n Creates a new DynamicObj from a Dictionary containing dynamic properties.\n ","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-dynamicobj.html#(?)","title":"DynamicObj.(?)","content":"DynamicObj.(?) \n(?) \n\n Operator to access a property by name\n\n This method is not Fable-compatible and can therefore not be used in code that will be transpiled.\n \nThis method is not Fable-compatible and can therefore not be used in code that will be transpiled.","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-dynamicobj.html#(?\u003C-)","title":"DynamicObj.(?\u003C-)","content":"DynamicObj.(?\u003C-) \n(?\u003C-) \n\n Operator to set a property value\n\n This method is not Fable-compatible and can therefore not be used in code that will be transpiled.\n \nThis method is not Fable-compatible and can therefore not be used in code that will be transpiled.","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-hashutils.html","title":"HashUtils","content":"HashUtils \n \nHashUtils.deepHash \ndeepHash","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-hashutils.html#deepHash","title":"HashUtils.deepHash","content":"HashUtils.deepHash \ndeepHash \n","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-propertyhelper.html","title":"PropertyHelper","content":"PropertyHelper \n \nPropertyHelper.fromPropertyInfo \nfromPropertyInfo \nPropertyHelper.Name \nName \nPropertyHelper.IsStatic \nIsStatic \nPropertyHelper.IsDynamic \nIsDynamic \nPropertyHelper.IsMutable \nIsMutable \nPropertyHelper.IsImmutable \nIsImmutable \nPropertyHelper.GetValue \nGetValue \nPropertyHelper.SetValue \nSetValue \nPropertyHelper.RemoveValue \nRemoveValue","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-propertyhelper.html#fromPropertyInfo","title":"PropertyHelper.fromPropertyInfo","content":"PropertyHelper.fromPropertyInfo \nfromPropertyInfo \n","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-propertyhelper.html#Name","title":"PropertyHelper.Name","content":"PropertyHelper.Name \nName \n","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-propertyhelper.html#IsStatic","title":"PropertyHelper.IsStatic","content":"PropertyHelper.IsStatic \nIsStatic \n","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-propertyhelper.html#IsDynamic","title":"PropertyHelper.IsDynamic","content":"PropertyHelper.IsDynamic \nIsDynamic \n","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-propertyhelper.html#IsMutable","title":"PropertyHelper.IsMutable","content":"PropertyHelper.IsMutable \nIsMutable \n","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-propertyhelper.html#IsImmutable","title":"PropertyHelper.IsImmutable","content":"PropertyHelper.IsImmutable \nIsImmutable \n","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-propertyhelper.html#GetValue","title":"PropertyHelper.GetValue","content":"PropertyHelper.GetValue \nGetValue \n","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-propertyhelper.html#SetValue","title":"PropertyHelper.SetValue","content":"PropertyHelper.SetValue \nSetValue \n","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-propertyhelper.html#RemoveValue","title":"PropertyHelper.RemoveValue","content":"PropertyHelper.RemoveValue \nRemoveValue \n","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-operators.html","title":"Operators","content":"Operators \n \nOperators.(\u002B\u002B) \n(\u002B\u002B) \nOperators.(--) \n(--) \nOperators.(\u002B\u002B?) \n(\u002B\u002B?) \nOperators.(\u002B\u002B??) \n(\u002B\u002B??)","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-operators.html#(\u002B\u002B)","title":"Operators.(\u002B\u002B)","content":"Operators.(\u002B\u002B) \n(\u002B\u002B) \n Returns an instance with:\n 1. this property added if it wasn\u0027t present\n 2. this property updated otherwise","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-operators.html#(--)","title":"Operators.(--)","content":"Operators.(--) \n(--) \n Returns an instance:\n 1. the same if there was no requested property\n 2. without the requested property if there was","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-operators.html#(\u002B\u002B?)","title":"Operators.(\u002B\u002B?)","content":"Operators.(\u002B\u002B?) \n(\u002B\u002B?) \n Acts as (\u002B\u002B) if the value is Some,\n returns the same object otherwise","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-operators.html#(\u002B\u002B??)","title":"Operators.(\u002B\u002B??)","content":"Operators.(\u002B\u002B??) \n(\u002B\u002B??) \n Acts as (\u002B\u002B?) but maps the valid value \n through the last argument","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-immutabledynamicobj.html","title":"ImmutableDynamicObj","content":"ImmutableDynamicObj \n Represents an DynamicObj\u0027s counterpart\n with immutability enabled only. \nImmutableDynamicObj.\u0060\u0060.ctor\u0060\u0060 \n\u0060\u0060.ctor\u0060\u0060 \nImmutableDynamicObj.\u0060\u0060.ctor\u0060\u0060 \n\u0060\u0060.ctor\u0060\u0060 \nImmutableDynamicObj.TryGetTypedValue \nTryGetTypedValue \nImmutableDynamicObj.TryGetValue \nTryGetValue \nImmutableDynamicObj.Item \nItem \nImmutableDynamicObj.add \nadd \nImmutableDynamicObj.addOpt \naddOpt \nImmutableDynamicObj.addOptBy \naddOptBy \nImmutableDynamicObj.combineWith \ncombineWith \nImmutableDynamicObj.format \nformat \nImmutableDynamicObj.print \nprint \nImmutableDynamicObj.remove \nremove \nImmutableDynamicObj.empty \nempty","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-immutabledynamicobj.html#\u0060\u0060.ctor\u0060\u0060","title":"ImmutableDynamicObj.\u0060\u0060.ctor\u0060\u0060","content":"ImmutableDynamicObj.\u0060\u0060.ctor\u0060\u0060 \n\u0060\u0060.ctor\u0060\u0060 \n Empty instance","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-immutabledynamicobj.html#\u0060\u0060.ctor\u0060\u0060","title":"ImmutableDynamicObj.\u0060\u0060.ctor\u0060\u0060","content":"ImmutableDynamicObj.\u0060\u0060.ctor\u0060\u0060 \n\u0060\u0060.ctor\u0060\u0060 \n","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-immutabledynamicobj.html#TryGetTypedValue","title":"ImmutableDynamicObj.TryGetTypedValue","content":"ImmutableDynamicObj.TryGetTypedValue \nTryGetTypedValue \n","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-immutabledynamicobj.html#TryGetValue","title":"ImmutableDynamicObj.TryGetValue","content":"ImmutableDynamicObj.TryGetValue \nTryGetValue \n","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-immutabledynamicobj.html#Item","title":"ImmutableDynamicObj.Item","content":"ImmutableDynamicObj.Item \nItem \n Indexes ; if no key found, throws","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-immutabledynamicobj.html#add","title":"ImmutableDynamicObj.add","content":"ImmutableDynamicObj.add \nadd \n Returns an instance with:\n 1. this property added if it wasn\u0027t present\n 2. this property updated otherwise","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-immutabledynamicobj.html#addOpt","title":"ImmutableDynamicObj.addOpt","content":"ImmutableDynamicObj.addOpt \naddOpt \n Acts as add if the value is Some,\n returns the same object otherwise","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-immutabledynamicobj.html#addOptBy","title":"ImmutableDynamicObj.addOptBy","content":"ImmutableDynamicObj.addOptBy \naddOptBy \n Acts as addOpt but maps the valid value \n through the last argument","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-immutabledynamicobj.html#combineWith","title":"ImmutableDynamicObj.combineWith","content":"ImmutableDynamicObj.combineWith \ncombineWith \nMerges the second ImmutableDynamicObj into the first one (that is, keeps the first one\u0027s type). \nWarning: In case of duplicate property names the members of the second object override those of the first.","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-immutabledynamicobj.html#format","title":"ImmutableDynamicObj.format","content":"ImmutableDynamicObj.format \nformat \n","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-immutabledynamicobj.html#print","title":"ImmutableDynamicObj.print","content":"ImmutableDynamicObj.print \nprint \n","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-immutabledynamicobj.html#remove","title":"ImmutableDynamicObj.remove","content":"ImmutableDynamicObj.remove \nremove \n Returns an instance:\n 1. the same if there was no requested property\n 2. without the requested property if there was","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-immutabledynamicobj.html#empty","title":"ImmutableDynamicObj.empty","content":"ImmutableDynamicObj.empty \nempty \n","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-immutabledynamicobjextensions.html","title":"ImmutableDynamicObjExtensions","content":"ImmutableDynamicObjExtensions \n \nImmutableDynamicObjExtensions.AddItem \nAddItem \nImmutableDynamicObjExtensions.Format \nFormat \nImmutableDynamicObjExtensions.Print \nPrint \nImmutableDynamicObjExtensions.RemoveItem \nRemoveItem","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-immutabledynamicobjextensions.html#AddItem","title":"ImmutableDynamicObjExtensions.AddItem","content":"ImmutableDynamicObjExtensions.AddItem \nAddItem \n Returns an instance with:\n 1. this property added if it wasn\u0027t present\n 2. this property updated otherwise\n use this one only from C#","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-immutabledynamicobjextensions.html#Format","title":"ImmutableDynamicObjExtensions.Format","content":"ImmutableDynamicObjExtensions.Format \nFormat \n","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-immutabledynamicobjextensions.html#Print","title":"ImmutableDynamicObjExtensions.Print","content":"ImmutableDynamicObjExtensions.Print \nPrint \n","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-immutabledynamicobjextensions.html#RemoveItem","title":"ImmutableDynamicObjExtensions.RemoveItem","content":"ImmutableDynamicObjExtensions.RemoveItem \nRemoveItem \n Returns an instance:\n 1. the same if there was no requested property\n 2. without the requested property if there was\n use this one only from C#","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-immutabledynamicobjjsonconverter.html","title":"ImmutableDynamicObjJsonConverter","content":"ImmutableDynamicObjJsonConverter \n \nImmutableDynamicObjJsonConverter.\u0060\u0060.ctor\u0060\u0060 \n\u0060\u0060.ctor\u0060\u0060","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-immutabledynamicobjjsonconverter.html#\u0060\u0060.ctor\u0060\u0060","title":"ImmutableDynamicObjJsonConverter.\u0060\u0060.ctor\u0060\u0060","content":"ImmutableDynamicObjJsonConverter.\u0060\u0060.ctor\u0060\u0060 \n\u0060\u0060.ctor\u0060\u0060 \n","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/index.html","title":"DynamicObj\n","content":"DynamicObj\nThe primary use case of DynamicObj is the extension of F# classes with dynamic properties.\nThis is useful when you want to add arbitrarily typed properties to a class at runtime.\n\nWhy would you want to do that?\n\nYes, The type system is one of the core strengths of F#, and it is awesome.\nHowever, there are cases where a static domain model is either unfeasible or not flexible enough, especially when interfacing with dynamic languages such as JavaScript or Python.\nDynamicObj is transpilable into JS and Python via Fable, meaning you can use it to create classes that are usable in both .NET and those languages, while making their usage (e.g., the setting of dynamic properties) both safe in .NET and idiomatic in JS/Python.\nGet started\n#r \u0026quot;nuget: Fable.Core\u0026quot; // Needed if working with Fable\n\nopen DynamicObj\nopen Fable.Core // Needed if working with Fable\n\n[\u0026lt;AttachMembers\u0026gt;] // AttachMembers needed if working with Fable\ntype Person(id : int, name : string) =\n \n // Include this in your class\n inherit DynamicObj()\n\n // Mutable static property\n let mutable _name = name\n member this.Name\n with get() = _name\n and set(value) = _name \u0026lt;- value\n\n // Immutable static property\n member this.ID \n with get() = id\n\nlet p = Person(1337,\u0026quot;John\u0026quot;)\n\nAccessing static and dynamic properties\nAny class inheriting from DynamicObj can have static and dynamic properties, and both are accessible via various instance methods.\nAccess Static Properties:\np.Name\n\n\u0022John\u0022\np.GetPropertyValue(\u0026quot;Name\u0026quot;)\n\n\u0022John\u0022\nOverwrite mutable static property\np.SetProperty(\u0026quot;Name\u0026quot;,\u0026quot;Jane\u0026quot;)\np.GetPropertyValue(\u0026quot;Name\u0026quot;)\n\n\u0022Jane\u0022\nYou cannot overwrite mutable static properties\np.SetProperty(\u0026quot;ID\u0026quot;,1234) // throws an excpection\n\np.GetPropertyValue(\u0026quot;ID\u0026quot;)\n\n1337\nSet dynamic properties\np.SetProperty(\u0026quot;Address\u0026quot;,\u0026quot;FunStreet\u0026quot;)\np.GetPropertyValue(\u0026quot;Address\u0026quot;)\n\n\u0022FunStreet\u0022\nSafe and typed access to dynamic properties\nNote that all properties returted by GetPropertyValue are boxed in .NET.\nIf you want to get the value in a typed manner, you can use the TryGetTypedPropertyValue method:\np.TryGetTypedPropertyValue\u0026lt;string\u0026gt;(\u0026quot;Name\u0026quot;)\n\nSome \u0022Jane\u0022\np.TryGetTypedPropertyValue\u0026lt;int\u0026gt;(\u0026quot;Name\u0026quot;)\n\n\u0026lt;null\u0026gt;\np.TryGetTypedPropertyValue\u0026lt;string\u0026gt;(\u0026quot;I Do Not Exist\u0026quot;)\n\n\u0026lt;null\u0026gt;\nAttention: the TryGetTypedPropertyValue method is not transpilable via Fable as it can only provide access to the types known at transpilation.\nHowever, You can use the respective module function to transpile typed dynamic member access.\nThe DynObj module\nThis module provides a lot of API functions that are not not desired as static methods on DynamicObj, as it would be confusing if they ended up on inheriting classes.\nIt also supports pipeline chaining.\np\n|\u0026gt; DynObj.tryGetTypedPropertyValue\u0026lt;int\u0026gt; \u0026quot;ID\u0026quot;\n\nSome 1337\np\n|\u0026gt; DynObj.withProperty \u0026quot;Another\u0026quot; \u0026quot;prop\u0026quot;\n|\u0026gt; DynObj.withProperty \u0026quot;Yes\u0026quot; 42\n|\u0026gt; DynObj.withoutProperty \u0026quot;Address\u0026quot;\n|\u0026gt; DynObj.withOptionalProperty \u0026quot;Maybe\u0026quot; (Some \u0026quot;yes\u0026quot;)\n|\u0026gt; DynObj.withOptionalProperty \u0026quot;Maybe not\u0026quot; None\n|\u0026gt; DynObj.format\n\n\u0022Name: Jane\nID: 1337\n?Maybe: yes\n?Another: prop\n?Yes: 42\u0022\nSerialization\nSerialization to a JSON string that contains both static and dynamic properties is supported out-of-the-box when using Newtonsoft.Json:\n#r \u0026quot;nuget: Newtonsoft.Json\u0026quot;\n\nopen Newtonsoft.Json\n\np\n|\u0026gt; JsonConvert.SerializeObject\n\n\u0022{\u0022Name\u0022:\u0022Jane\u0022,\u0022ID\u0022:1337,\u0022Maybe\u0022:\u0022yes\u0022,\u0022Another\u0022:\u0022prop\u0022,\u0022Yes\u0022:42}\u0022\n","headings":["DynamicObj","Get started","Accessing static and dynamic properties","Access Static Properties:","Overwrite mutable static property","You cannot overwrite mutable static properties","Set dynamic properties","Safe and typed access to dynamic properties","The DynObj module","Serialization"],"type":"content"}] \ No newline at end of file +[{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj.html","title":"DynamicObj","content":"DynObj \nFableJS \nFablePy \nHashCodes \nReflectionUtils \nCopyUtils \nDynamicObj \nHashUtils \nPropertyHelper \nOperators \nImmutableDynamicObj \nImmutableDynamicObjExtensions \nImmutableDynamicObjJsonConverter","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-dynobj.html","title":"DynObj","content":"DynObj \n This module contains lots of API functions for DynamicObj. \n\n These functions are not static methods on the DynamicObj type itself because that type is designed to be inherited from, \n and a lot of these functions might not make sense as static methods on inheriting types. \nDynObj.ofDict \nofDict \nDynObj.ofSeq \nofSeq \nDynObj.ofList \nofList \nDynObj.ofArray \nofArray \nDynObj.combine \ncombine \nDynObj.tryGetTypedPropertyValue \ntryGetTypedPropertyValue \nDynObj.setProperty \nsetProperty \nDynObj.withProperty \nwithProperty \nDynObj.setOptionalProperty \nsetOptionalProperty \nDynObj.withOptionalProperty \nwithOptionalProperty \nDynObj.setOptionalPropertyBy \nsetOptionalPropertyBy \nDynObj.withOptionalPropertyBy \nwithOptionalPropertyBy \nDynObj.tryGetPropertyValue \ntryGetPropertyValue \nDynObj.removeProperty \nremoveProperty \nDynObj.withoutProperty \nwithoutProperty \nDynObj.format \nformat \nDynObj.print \nprint \nDynObj.tryDeepCopyObj \ntryDeepCopyObj","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-dynobj.html#ofDict","title":"DynObj.ofDict","content":"DynObj.ofDict \nofDict \n\n Creates a new DynamicObj from a Dictionary containing dynamic properties.\n ","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-dynobj.html#ofSeq","title":"DynObj.ofSeq","content":"DynObj.ofSeq \nofSeq \n\n Creates a new DynamicObj from a sequence of key value pairs containing dynamic properties.\n ","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-dynobj.html#ofList","title":"DynObj.ofList","content":"DynObj.ofList \nofList \n\n Creates a new DynamicObj from a list of key value pairs containing dynamic properties.\n ","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-dynobj.html#ofArray","title":"DynObj.ofArray","content":"DynObj.ofArray \nofArray \n\n Creates a new DynamicObj from an array of key value pairs containing dynamic properties.\n ","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-dynobj.html#combine","title":"DynObj.combine","content":"DynObj.combine \ncombine \n\n Combines the dynamic properties of the second DynamicObj onto the first. \n\n In case of duplicate property names the members of the second object override those of the first.\n \nThis function mutates the first input DynamicObj","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-dynobj.html#tryGetTypedPropertyValue","title":"DynObj.tryGetTypedPropertyValue","content":"DynObj.tryGetTypedPropertyValue \ntryGetTypedPropertyValue \n\n Returns Some(\u0027TPropertyValue) when a dynamic (or static) property with the given name and type exists on the input, otherwise None.\n ","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-dynobj.html#setProperty","title":"DynObj.setProperty","content":"DynObj.setProperty \nsetProperty \n\n Sets the dynamic (or static) property value with the given name on the given DynamicObj, creating a new dynamic property if none exists.\n \nThis function mutates the input DynamicObj","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-dynobj.html#withProperty","title":"DynObj.withProperty","content":"DynObj.withProperty \nwithProperty \n\n Sets the dynamic (or static) property value with the given name, creating a new dynamic property if none exists on the given DynamicObj and returns it.\n \nThis function mutates the input DynamicObj","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-dynobj.html#setOptionalProperty","title":"DynObj.setOptionalProperty","content":"DynObj.setOptionalProperty \nsetOptionalProperty \n\n Sets the dynamic (or static) property value with the given name on the given DynamicObj if the value is Some(\u0027TPropertyValue), creating a new dynamic property if none exists.\n If the given propertyValue is None, does nothing to the input DynamicObj.\n \nThis function mutates the input DynamicObj","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-dynobj.html#withOptionalProperty","title":"DynObj.withOptionalProperty","content":"DynObj.withOptionalProperty \nwithOptionalProperty \n\n Sets the dynamic (or static) property value with the given name on the given DynamicObj if the value is Some(\u0027TPropertyValue), creating a new dynamic property if none exists, and returns it.\n If the given propertyValue is None, does nothing to the input DynamicObj.\n \nThis function mutates the input DynamicObj","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-dynobj.html#setOptionalPropertyBy","title":"DynObj.setOptionalPropertyBy","content":"DynObj.setOptionalPropertyBy \nsetOptionalPropertyBy \n\n Sets the given dynamic (or static) property with the result of a mapping function applied to the given property value on the given DynamicObj if the value is Some(\u0027TPropertyValue).\n If the given propertyValue is None, does nothing to the input DynamicObj.\n \nThis function mutates the input DynamicObj","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-dynobj.html#withOptionalPropertyBy","title":"DynObj.withOptionalPropertyBy","content":"DynObj.withOptionalPropertyBy \nwithOptionalPropertyBy \n\n Sets the given dynamic (or static) property with the result of a mapping function applied to the given property value on the given DynamicObj if the value is Some(\u0027TPropertyValue) and returns it.\n If the given propertyValue is None, returns the unchanged DynamicObj.\n \nThis function mutates the input DynamicObj","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-dynobj.html#tryGetPropertyValue","title":"DynObj.tryGetPropertyValue","content":"DynObj.tryGetPropertyValue \ntryGetPropertyValue \n\n Returns Some(boxed property value) if a dynamic (or static) property with the given name exists on the input, otherwise None.\n ","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-dynobj.html#removeProperty","title":"DynObj.removeProperty","content":"DynObj.removeProperty \nremoveProperty \n\n Removes any dynamic property with the given name from the input DynamicObj.\n If the property is static and mutable, it will be set to null.\n Static immutable properties cannot be removed.\n \nThis function mutates the input DynamicObj","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-dynobj.html#withoutProperty","title":"DynObj.withoutProperty","content":"DynObj.withoutProperty \nwithoutProperty \n\n Removes any dynamic property with the given name from the input DynamicObj and returns it.\n If the property is static and mutable, it will be set to null.\n Static immutable properties cannot be removed.\n \nThis function mutates the input DynamicObj","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-dynobj.html#format","title":"DynObj.format","content":"DynObj.format \nformat \n\n Returns a formatted string containing all static and dynamic properties of the given DynamicObj\n ","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-dynobj.html#print","title":"DynObj.print","content":"DynObj.print \nprint \n\n Prints a formatted string containing all static and dynamic properties of the given DynamicObj\n ","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-dynobj.html#tryDeepCopyObj","title":"DynObj.tryDeepCopyObj","content":"DynObj.tryDeepCopyObj \ntryDeepCopyObj \n\n function to deep copy a boxed object (if possible)\n\n The following cases are handled (in this precedence):\n\n - Basic F# types (\u0060bool\u0060, \u0060byte\u0060, \u0060sbyte\u0060, \u0060int16\u0060, \u0060uint16\u0060, \u0060int\u0060, \u0060uint\u0060, \u0060int64\u0060, \u0060uint64\u0060, \u0060nativeint\u0060, \u0060unativeint\u0060, \u0060float\u0060, \u0060float32\u0060, \u0060char\u0060, \u0060string\u0060, \u0060unit\u0060, \u0060decimal\u0060)\n \n - \u0060ResizeArrays\u0060 and \u0060Dictionaries\u0060 containing any combination of basic F# types\n \n - \u0060Dictionaries\u0060 containing \u0060DynamicObj\u0060 as keys or values in any combination with \u0060DynamicObj\u0060 or basic F# types as keys or values\n \n - \u0060array\u003CDynamicObj\u003E\u0060, \u0060list\u003CDynamicObj\u003E\u0060, \u0060ResizeArray\u003CDynamicObj\u003E\u0060: These collections of DynamicObj are copied as a new collection with recursively deep copied elements.\n \n - \u0060System.ICloneable\u0060: If the property implements \u0060ICloneable\u0060, the \u0060Clone()\u0060 method is called on the property.\n \n - \u0060DynamicObj\u0060 (and derived classes): properties that are themselves \u0060DynamicObj\u0060 instances are deep copied recursively.\n if a derived class has static properties (e.g. instance properties), these can be copied as dynamic properties on the new instance or ignored.\n \n Note on Classes that inherit from \u0060DynamicObj\u0060:\n \n Classes that inherit from DynamicObj will match the \u0060DynamicObj\u0060 typecheck if they do not implement \u0060ICloneable\u0060.\n The deep copied instances will be cast to \u0060DynamicObj\u0060 with deep copied dynamic properties. Staic/instance properties can be copied as dynamic properties on the new instance or be ignored.\n It should be possible to \u0027recover\u0027 the original type by checking if the needed properties exist as dynamic properties,\n and then passing them to the class constructor if needed.\n ","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-fablejs.html","title":"FableJS","content":"FableJS \n \nFableJS.Dictionaries \nDictionaries \nFableJS.Interfaces \nInterfaces \nFableJS.PropertyDescriptor \nPropertyDescriptor \nFableJS.getOwnPropertyNames \ngetOwnPropertyNames \nFableJS.getPrototype \ngetPrototype \nFableJS.getStaticPropertyNames \ngetStaticPropertyNames \nFableJS.setPropertyValue \nsetPropertyValue \nFableJS.createSetter \ncreateSetter \nFableJS.removeStaticPropertyValue \nremoveStaticPropertyValue \nFableJS.deleteDynamicPropertyValue \ndeleteDynamicPropertyValue \nFableJS.createRemover \ncreateRemover \nFableJS.getPropertyValue \ngetPropertyValue \nFableJS.createGetter \ncreateGetter \nFableJS.tryGetPropertyDescriptor \ntryGetPropertyDescriptor \nFableJS.tryGetStaticPropertyDescriptor \ntryGetStaticPropertyDescriptor \nFableJS.tryStaticPropertyHelperFromDescriptor \ntryStaticPropertyHelperFromDescriptor \nFableJS.tryGetStaticPropertyHelper \ntryGetStaticPropertyHelper \nFableJS.getStaticPropertyHelpers \ngetStaticPropertyHelpers \nFableJS.tryGetDynamicPropertyDescriptor \ntryGetDynamicPropertyDescriptor \nFableJS.transpiledPropertyRegex \ntranspiledPropertyRegex \nFableJS.isTranspiledPropertyHelper \nisTranspiledPropertyHelper \nFableJS.tryDynamicPropertyHelperFromDescriptor \ntryDynamicPropertyHelperFromDescriptor \nFableJS.tryGetDynamicPropertyHelper \ntryGetDynamicPropertyHelper \nFableJS.getDynamicPropertyHelpers \ngetDynamicPropertyHelpers \nFableJS.getPropertyHelpers \ngetPropertyHelpers \nFableJS.getPropertyNames \ngetPropertyNames","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-fablejs.html#getOwnPropertyNames","title":"FableJS.getOwnPropertyNames","content":"FableJS.getOwnPropertyNames \ngetOwnPropertyNames \n","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-fablejs.html#getPrototype","title":"FableJS.getPrototype","content":"FableJS.getPrototype \ngetPrototype \n","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-fablejs.html#getStaticPropertyNames","title":"FableJS.getStaticPropertyNames","content":"FableJS.getStaticPropertyNames \ngetStaticPropertyNames \n","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-fablejs.html#setPropertyValue","title":"FableJS.setPropertyValue","content":"FableJS.setPropertyValue \nsetPropertyValue \n","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-fablejs.html#createSetter","title":"FableJS.createSetter","content":"FableJS.createSetter \ncreateSetter \n","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-fablejs.html#removeStaticPropertyValue","title":"FableJS.removeStaticPropertyValue","content":"FableJS.removeStaticPropertyValue \nremoveStaticPropertyValue \n","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-fablejs.html#deleteDynamicPropertyValue","title":"FableJS.deleteDynamicPropertyValue","content":"FableJS.deleteDynamicPropertyValue \ndeleteDynamicPropertyValue \n","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-fablejs.html#createRemover","title":"FableJS.createRemover","content":"FableJS.createRemover \ncreateRemover \n","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-fablejs.html#getPropertyValue","title":"FableJS.getPropertyValue","content":"FableJS.getPropertyValue \ngetPropertyValue \n","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-fablejs.html#createGetter","title":"FableJS.createGetter","content":"FableJS.createGetter \ncreateGetter \n","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-fablejs.html#tryGetPropertyDescriptor","title":"FableJS.tryGetPropertyDescriptor","content":"FableJS.tryGetPropertyDescriptor \ntryGetPropertyDescriptor \n","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-fablejs.html#tryGetStaticPropertyDescriptor","title":"FableJS.tryGetStaticPropertyDescriptor","content":"FableJS.tryGetStaticPropertyDescriptor \ntryGetStaticPropertyDescriptor \n","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-fablejs.html#tryStaticPropertyHelperFromDescriptor","title":"FableJS.tryStaticPropertyHelperFromDescriptor","content":"FableJS.tryStaticPropertyHelperFromDescriptor \ntryStaticPropertyHelperFromDescriptor \n","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-fablejs.html#tryGetStaticPropertyHelper","title":"FableJS.tryGetStaticPropertyHelper","content":"FableJS.tryGetStaticPropertyHelper \ntryGetStaticPropertyHelper \n","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-fablejs.html#getStaticPropertyHelpers","title":"FableJS.getStaticPropertyHelpers","content":"FableJS.getStaticPropertyHelpers \ngetStaticPropertyHelpers \n","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-fablejs.html#tryGetDynamicPropertyDescriptor","title":"FableJS.tryGetDynamicPropertyDescriptor","content":"FableJS.tryGetDynamicPropertyDescriptor \ntryGetDynamicPropertyDescriptor \n","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-fablejs.html#transpiledPropertyRegex","title":"FableJS.transpiledPropertyRegex","content":"FableJS.transpiledPropertyRegex \ntranspiledPropertyRegex \n","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-fablejs.html#isTranspiledPropertyHelper","title":"FableJS.isTranspiledPropertyHelper","content":"FableJS.isTranspiledPropertyHelper \nisTranspiledPropertyHelper \n","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-fablejs.html#tryDynamicPropertyHelperFromDescriptor","title":"FableJS.tryDynamicPropertyHelperFromDescriptor","content":"FableJS.tryDynamicPropertyHelperFromDescriptor \ntryDynamicPropertyHelperFromDescriptor \n","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-fablejs.html#tryGetDynamicPropertyHelper","title":"FableJS.tryGetDynamicPropertyHelper","content":"FableJS.tryGetDynamicPropertyHelper \ntryGetDynamicPropertyHelper \n","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-fablejs.html#getDynamicPropertyHelpers","title":"FableJS.getDynamicPropertyHelpers","content":"FableJS.getDynamicPropertyHelpers \ngetDynamicPropertyHelpers \n","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-fablejs.html#getPropertyHelpers","title":"FableJS.getPropertyHelpers","content":"FableJS.getPropertyHelpers \ngetPropertyHelpers \n","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-fablejs.html#getPropertyNames","title":"FableJS.getPropertyNames","content":"FableJS.getPropertyNames \ngetPropertyNames \n","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-fablejs-dictionaries.html","title":"Dictionaries","content":"Dictionaries \n \nDictionaries.isMap \nisMap \nDictionaries.isDict \nisDict","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-fablejs-dictionaries.html#isMap","title":"Dictionaries.isMap","content":"Dictionaries.isMap \nisMap \n","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-fablejs-dictionaries.html#isDict","title":"Dictionaries.isDict","content":"Dictionaries.isDict \nisDict \n","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-fablejs-interfaces.html","title":"Interfaces","content":"Interfaces \n \nInterfaces.implementsICloneable \nimplementsICloneable \nInterfaces.cloneICloneable \ncloneICloneable","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-fablejs-interfaces.html#implementsICloneable","title":"Interfaces.implementsICloneable","content":"Interfaces.implementsICloneable \nimplementsICloneable \n","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-fablejs-interfaces.html#cloneICloneable","title":"Interfaces.cloneICloneable","content":"Interfaces.cloneICloneable \ncloneICloneable \n","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-fablejs-propertydescriptor.html","title":"PropertyDescriptor","content":"PropertyDescriptor \n \nPropertyDescriptor.tryGetPropertyValue \ntryGetPropertyValue \nPropertyDescriptor.tryGetIsWritable \ntryGetIsWritable \nPropertyDescriptor.containsGetter \ncontainsGetter \nPropertyDescriptor.containsSetter \ncontainsSetter \nPropertyDescriptor.isWritable \nisWritable \nPropertyDescriptor.valueIsFunction \nvalueIsFunction \nPropertyDescriptor.isFunction \nisFunction","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-fablejs-propertydescriptor.html#tryGetPropertyValue","title":"PropertyDescriptor.tryGetPropertyValue","content":"PropertyDescriptor.tryGetPropertyValue \ntryGetPropertyValue \n","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-fablejs-propertydescriptor.html#tryGetIsWritable","title":"PropertyDescriptor.tryGetIsWritable","content":"PropertyDescriptor.tryGetIsWritable \ntryGetIsWritable \n","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-fablejs-propertydescriptor.html#containsGetter","title":"PropertyDescriptor.containsGetter","content":"PropertyDescriptor.containsGetter \ncontainsGetter \n","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-fablejs-propertydescriptor.html#containsSetter","title":"PropertyDescriptor.containsSetter","content":"PropertyDescriptor.containsSetter \ncontainsSetter \n","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-fablejs-propertydescriptor.html#isWritable","title":"PropertyDescriptor.isWritable","content":"PropertyDescriptor.isWritable \nisWritable \n","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-fablejs-propertydescriptor.html#valueIsFunction","title":"PropertyDescriptor.valueIsFunction","content":"PropertyDescriptor.valueIsFunction \nvalueIsFunction \n","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-fablejs-propertydescriptor.html#isFunction","title":"PropertyDescriptor.isFunction","content":"PropertyDescriptor.isFunction \nisFunction \n","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-fablepy.html","title":"FablePy","content":"FablePy \n \nFablePy.Dictionaries \nDictionaries \nFablePy.Dictionary \nDictionary \nFablePy.Interfaces \nInterfaces \nFablePy.PropertyObject \nPropertyObject \nFablePy.PropertyObject \nPropertyObject \nFablePy.getPropertyValue \ngetPropertyValue \nFablePy.createGetter \ncreateGetter \nFablePy.setPropertyValue \nsetPropertyValue \nFablePy.createSetter \ncreateSetter \nFablePy.getOwnMemberObjects \ngetOwnMemberObjects \nFablePy.getClass \ngetClass \nFablePy.getStaticPropertyObjects \ngetStaticPropertyObjects \nFablePy.removeStaticPropertyValue \nremoveStaticPropertyValue \nFablePy.deleteDynamicPropertyValue \ndeleteDynamicPropertyValue \nFablePy.createRemover \ncreateRemover \nFablePy.getMemberObject \ngetMemberObject \nFablePy.tryGetPropertyObject \ntryGetPropertyObject \nFablePy.tryGetDynamicPropertyHelper \ntryGetDynamicPropertyHelper \nFablePy.tryGetStaticPropertyHelper \ntryGetStaticPropertyHelper \nFablePy.transpiledPropertyRegex \ntranspiledPropertyRegex \nFablePy.isTranspiledPropertyHelper \nisTranspiledPropertyHelper \nFablePy.getDynamicPropertyHelpers \ngetDynamicPropertyHelpers \nFablePy.getStaticPropertyHelpers \ngetStaticPropertyHelpers \nFablePy.getPropertyHelpers \ngetPropertyHelpers \nFablePy.getPropertyNames \ngetPropertyNames","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-fablepy.html#getPropertyValue","title":"FablePy.getPropertyValue","content":"FablePy.getPropertyValue \ngetPropertyValue \n","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-fablepy.html#createGetter","title":"FablePy.createGetter","content":"FablePy.createGetter \ncreateGetter \n","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-fablepy.html#setPropertyValue","title":"FablePy.setPropertyValue","content":"FablePy.setPropertyValue \nsetPropertyValue \n","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-fablepy.html#createSetter","title":"FablePy.createSetter","content":"FablePy.createSetter \ncreateSetter \n","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-fablepy.html#getOwnMemberObjects","title":"FablePy.getOwnMemberObjects","content":"FablePy.getOwnMemberObjects \ngetOwnMemberObjects \n","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-fablepy.html#getClass","title":"FablePy.getClass","content":"FablePy.getClass \ngetClass \n","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-fablepy.html#getStaticPropertyObjects","title":"FablePy.getStaticPropertyObjects","content":"FablePy.getStaticPropertyObjects \ngetStaticPropertyObjects \n","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-fablepy.html#removeStaticPropertyValue","title":"FablePy.removeStaticPropertyValue","content":"FablePy.removeStaticPropertyValue \nremoveStaticPropertyValue \n","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-fablepy.html#deleteDynamicPropertyValue","title":"FablePy.deleteDynamicPropertyValue","content":"FablePy.deleteDynamicPropertyValue \ndeleteDynamicPropertyValue \n","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-fablepy.html#createRemover","title":"FablePy.createRemover","content":"FablePy.createRemover \ncreateRemover \n","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-fablepy.html#getMemberObject","title":"FablePy.getMemberObject","content":"FablePy.getMemberObject \ngetMemberObject \n","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-fablepy.html#tryGetPropertyObject","title":"FablePy.tryGetPropertyObject","content":"FablePy.tryGetPropertyObject \ntryGetPropertyObject \n","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-fablepy.html#tryGetDynamicPropertyHelper","title":"FablePy.tryGetDynamicPropertyHelper","content":"FablePy.tryGetDynamicPropertyHelper \ntryGetDynamicPropertyHelper \n","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-fablepy.html#tryGetStaticPropertyHelper","title":"FablePy.tryGetStaticPropertyHelper","content":"FablePy.tryGetStaticPropertyHelper \ntryGetStaticPropertyHelper \n","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-fablepy.html#transpiledPropertyRegex","title":"FablePy.transpiledPropertyRegex","content":"FablePy.transpiledPropertyRegex \ntranspiledPropertyRegex \n","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-fablepy.html#isTranspiledPropertyHelper","title":"FablePy.isTranspiledPropertyHelper","content":"FablePy.isTranspiledPropertyHelper \nisTranspiledPropertyHelper \n","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-fablepy.html#getDynamicPropertyHelpers","title":"FablePy.getDynamicPropertyHelpers","content":"FablePy.getDynamicPropertyHelpers \ngetDynamicPropertyHelpers \n","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-fablepy.html#getStaticPropertyHelpers","title":"FablePy.getStaticPropertyHelpers","content":"FablePy.getStaticPropertyHelpers \ngetStaticPropertyHelpers \n","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-fablepy.html#getPropertyHelpers","title":"FablePy.getPropertyHelpers","content":"FablePy.getPropertyHelpers \ngetPropertyHelpers \n","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-fablepy.html#getPropertyNames","title":"FablePy.getPropertyNames","content":"FablePy.getPropertyNames \ngetPropertyNames \n","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-fablepy-dictionaries.html","title":"Dictionaries","content":"Dictionaries \n \nDictionaries.isDict \nisDict","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-fablepy-dictionaries.html#isDict","title":"Dictionaries.isDict","content":"Dictionaries.isDict \nisDict \n","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-fablepy-dictionary.html","title":"Dictionary","content":"Dictionary \n \nDictionary.ofSeq \nofSeq \nDictionary.choose \nchoose","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-fablepy-dictionary.html#ofSeq","title":"Dictionary.ofSeq","content":"Dictionary.ofSeq \nofSeq \n","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-fablepy-dictionary.html#choose","title":"Dictionary.choose","content":"Dictionary.choose \nchoose \n","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-fablepy-interfaces.html","title":"Interfaces","content":"Interfaces \n \nInterfaces.implementsICloneable \nimplementsICloneable \nInterfaces.cloneICloneable \ncloneICloneable","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-fablepy-interfaces.html#implementsICloneable","title":"Interfaces.implementsICloneable","content":"Interfaces.implementsICloneable \nimplementsICloneable \n","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-fablepy-interfaces.html#cloneICloneable","title":"Interfaces.cloneICloneable","content":"Interfaces.cloneICloneable \ncloneICloneable \n","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-fablepy-propertyobjectmodule.html","title":"PropertyObject","content":"PropertyObject \n \nPropertyObject.tryGetGetter \ntryGetGetter \nPropertyObject.tryGetSetter \ntryGetSetter \nPropertyObject.getGetter \ngetGetter \nPropertyObject.getSetter \ngetSetter \nPropertyObject.containsGetter \ncontainsGetter \nPropertyObject.containsSetter \ncontainsSetter \nPropertyObject.isWritable \nisWritable \nPropertyObject.isProperty \nisProperty \nPropertyObject.tryProperty \ntryProperty","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-fablepy-propertyobjectmodule.html#tryGetGetter","title":"PropertyObject.tryGetGetter","content":"PropertyObject.tryGetGetter \ntryGetGetter \n","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-fablepy-propertyobjectmodule.html#tryGetSetter","title":"PropertyObject.tryGetSetter","content":"PropertyObject.tryGetSetter \ntryGetSetter \n","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-fablepy-propertyobjectmodule.html#getGetter","title":"PropertyObject.getGetter","content":"PropertyObject.getGetter \ngetGetter \n","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-fablepy-propertyobjectmodule.html#getSetter","title":"PropertyObject.getSetter","content":"PropertyObject.getSetter \ngetSetter \n","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-fablepy-propertyobjectmodule.html#containsGetter","title":"PropertyObject.containsGetter","content":"PropertyObject.containsGetter \ncontainsGetter \n","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-fablepy-propertyobjectmodule.html#containsSetter","title":"PropertyObject.containsSetter","content":"PropertyObject.containsSetter \ncontainsSetter \n","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-fablepy-propertyobjectmodule.html#isWritable","title":"PropertyObject.isWritable","content":"PropertyObject.isWritable \nisWritable \n","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-fablepy-propertyobjectmodule.html#isProperty","title":"PropertyObject.isProperty","content":"PropertyObject.isProperty \nisProperty \n","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-fablepy-propertyobjectmodule.html#tryProperty","title":"PropertyObject.tryProperty","content":"PropertyObject.tryProperty \ntryProperty \n","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-fablepy-propertyobject.html","title":"PropertyObject","content":"PropertyObject \n \nPropertyObject.fset \nfset \nPropertyObject.fget \nfget","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-fablepy-propertyobject.html#fset","title":"PropertyObject.fset","content":"PropertyObject.fset \nfset \n","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-fablepy-propertyobject.html#fget","title":"PropertyObject.fget","content":"PropertyObject.fget \nfget \n","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-hashcodes.html","title":"HashCodes","content":"HashCodes \n \nHashCodes.mergeHashes \nmergeHashes \nHashCodes.hashDateTime \nhashDateTime \nHashCodes.hash \nhash \nHashCodes.boxHashOption \nboxHashOption \nHashCodes.boxHashArray \nboxHashArray \nHashCodes.boxHashSeq \nboxHashSeq \nHashCodes.boxHashKeyValSeq \nboxHashKeyValSeq \nHashCodes.boxHashKeyValSeqBy \nboxHashKeyValSeqBy","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-hashcodes.html#mergeHashes","title":"HashCodes.mergeHashes","content":"HashCodes.mergeHashes \nmergeHashes \n","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-hashcodes.html#hashDateTime","title":"HashCodes.hashDateTime","content":"HashCodes.hashDateTime \nhashDateTime \n","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-hashcodes.html#hash","title":"HashCodes.hash","content":"HashCodes.hash \nhash \n","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-hashcodes.html#boxHashOption","title":"HashCodes.boxHashOption","content":"HashCodes.boxHashOption \nboxHashOption \n","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-hashcodes.html#boxHashArray","title":"HashCodes.boxHashArray","content":"HashCodes.boxHashArray \nboxHashArray \n","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-hashcodes.html#boxHashSeq","title":"HashCodes.boxHashSeq","content":"HashCodes.boxHashSeq \nboxHashSeq \n","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-hashcodes.html#boxHashKeyValSeq","title":"HashCodes.boxHashKeyValSeq","content":"HashCodes.boxHashKeyValSeq \nboxHashKeyValSeq \n","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-hashcodes.html#boxHashKeyValSeqBy","title":"HashCodes.boxHashKeyValSeqBy","content":"HashCodes.boxHashKeyValSeqBy \nboxHashKeyValSeqBy \n","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-reflectionutils.html","title":"ReflectionUtils","content":"ReflectionUtils \n \nReflectionUtils.getStaticProperties \ngetStaticProperties \nReflectionUtils.tryGetStaticPropertyInfo \ntryGetStaticPropertyInfo \nReflectionUtils.trySetPropertyValue \ntrySetPropertyValue \nReflectionUtils.tryGetPropertyValue \ntryGetPropertyValue \nReflectionUtils.tryGetPropertyValueAs \ntryGetPropertyValueAs \nReflectionUtils.removeProperty \nremoveProperty","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-reflectionutils.html#getStaticProperties","title":"ReflectionUtils.getStaticProperties","content":"ReflectionUtils.getStaticProperties \ngetStaticProperties \n","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-reflectionutils.html#tryGetStaticPropertyInfo","title":"ReflectionUtils.tryGetStaticPropertyInfo","content":"ReflectionUtils.tryGetStaticPropertyInfo \ntryGetStaticPropertyInfo \n Try to get the PropertyInfo by name using reflection","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-reflectionutils.html#trySetPropertyValue","title":"ReflectionUtils.trySetPropertyValue","content":"ReflectionUtils.trySetPropertyValue \ntrySetPropertyValue \n","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-reflectionutils.html#tryGetPropertyValue","title":"ReflectionUtils.tryGetPropertyValue","content":"ReflectionUtils.tryGetPropertyValue \ntryGetPropertyValue \n","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-reflectionutils.html#tryGetPropertyValueAs","title":"ReflectionUtils.tryGetPropertyValueAs","content":"ReflectionUtils.tryGetPropertyValueAs \ntryGetPropertyValueAs \n Gets property value as \u0027a option using reflection. Cast to \u0027a","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-reflectionutils.html#removeProperty","title":"ReflectionUtils.removeProperty","content":"ReflectionUtils.removeProperty \nremoveProperty \n","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-copyutils.html","title":"CopyUtils","content":"CopyUtils \n \nCopyUtils.tryDeepCopyObj \ntryDeepCopyObj","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-copyutils.html#tryDeepCopyObj","title":"CopyUtils.tryDeepCopyObj","content":"CopyUtils.tryDeepCopyObj \ntryDeepCopyObj \n\n function to deep copy a boxed object (if possible)\n The following cases are handled (in this precedence):\n\n - Basic F# types (\u0060bool\u0060, \u0060byte\u0060, \u0060sbyte\u0060, \u0060int16\u0060, \u0060uint16\u0060, \u0060int\u0060, \u0060uint\u0060, \u0060int64\u0060, \u0060uint64\u0060, \u0060nativeint\u0060, \u0060unativeint\u0060, \u0060float\u0060, \u0060float32\u0060, \u0060char\u0060, \u0060string\u0060, \u0060unit\u0060, \u0060decimal\u0060)\n \n - \u0060ResizeArrays\u0060 and \u0060Dictionaries\u0060 containing any combination of basic F# types\n \n - \u0060Dictionaries\u0060 containing \u0060DynamicObj\u0060 as keys or values in any combination with \u0060DynamicObj\u0060 or basic F# types as keys or values\n \n - \u0060array\u003CDynamicObj\u003E\u0060, \u0060list\u003CDynamicObj\u003E\u0060, \u0060ResizeArray\u003CDynamicObj\u003E\u0060: These collections of DynamicObj are copied as a new collection with recursively deep copied elements.\n \n - \u0060System.ICloneable\u0060: If the property implements \u0060ICloneable\u0060, the \u0060Clone()\u0060 method is called on the property.\n \n - \u0060DynamicObj\u0060 (and derived classes): properties that are themselves \u0060DynamicObj\u0060 instances are deep copied recursively.\n if a derived class has static properties (e.g. instance properties), these can be copied as dynamic properties on the new instance or ignored.\n \n Note on Classes that inherit from \u0060DynamicObj\u0060:\n \n Classes that inherit from DynamicObj will match the \u0060DynamicObj\u0060 typecheck if they do not implement \u0060ICloneable\u0060.\n The deep copied instances will be cast to \u0060DynamicObj\u0060 with deep copied dynamic properties. Staic/instance properties can be copied as dynamic properties on the new instance or be ignored.\n It should be possible to \u0027recover\u0027 the original type by checking if the needed properties exist as dynamic properties,\n and then passing them to the class constructor if needed.\n ","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-dynamicobj.html","title":"DynamicObj","content":"DynamicObj \n \nDynamicObj.\u0060\u0060.ctor\u0060\u0060 \n\u0060\u0060.ctor\u0060\u0060 \nDynamicObj.DeepCopyProperties \nDeepCopyProperties \nDynamicObj.DeepCopyPropertiesTo \nDeepCopyPropertiesTo \nDynamicObj.GetProperties \nGetProperties \nDynamicObj.GetPropertyHelpers \nGetPropertyHelpers \nDynamicObj.GetPropertyNames \nGetPropertyNames \nDynamicObj.GetPropertyValue \nGetPropertyValue \nDynamicObj.ReferenceEquals \nReferenceEquals \nDynamicObj.RemoveProperty \nRemoveProperty \nDynamicObj.SetProperty \nSetProperty \nDynamicObj.ShallowCopyDynamicProperties \nShallowCopyDynamicProperties \nDynamicObj.ShallowCopyDynamicPropertiesTo \nShallowCopyDynamicPropertiesTo \nDynamicObj.StructurallyEquals \nStructurallyEquals \nDynamicObj.TryGetDynamicPropertyHelper \nTryGetDynamicPropertyHelper \nDynamicObj.TryGetPropertyHelper \nTryGetPropertyHelper \nDynamicObj.TryGetPropertyValue \nTryGetPropertyValue \nDynamicObj.TryGetStaticPropertyHelper \nTryGetStaticPropertyHelper \nDynamicObj.TryGetTypedPropertyValue \nTryGetTypedPropertyValue \nDynamicObj.Properties \nProperties \nDynamicObj.ofDict \nofDict \nDynamicObj.(?) \n(?) \nDynamicObj.(?\u003C-) \n(?\u003C-)","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-dynamicobj.html#\u0060\u0060.ctor\u0060\u0060","title":"DynamicObj.\u0060\u0060.ctor\u0060\u0060","content":"DynamicObj.\u0060\u0060.ctor\u0060\u0060 \n\u0060\u0060.ctor\u0060\u0060 \n","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-dynamicobj.html#DeepCopyProperties","title":"DynamicObj.DeepCopyProperties","content":"DynamicObj.DeepCopyProperties \nDeepCopyProperties \n\n Recursively deep copy a \u0060DynamicObj\u0060 instance (or derived class) with **all** (static and dynamic) properties. Reinstantiation - and therefore prevention of reference equality - is possible for \u0060DynamicObj\u0060, \u0060array|list|ResizeArray\u003CDynamicObj\u003E\u0060, and classes implementing \u0060System.Icloneable\u0060\n \n On the deep copy, as many properties as possible are re-instantiated as new objects, meaning the \n copy has as little reference equal properties as possible.\n \n The nature of DynamicObj however means that it is impossible to reliably deep copy all properties, as\n their type is not known on runtime and the contructors of the types are not known.\n\n The following cases are handled (in this precedence):\n\n - Basic F# types (\u0060bool\u0060, \u0060byte\u0060, \u0060sbyte\u0060, \u0060int16\u0060, \u0060uint16\u0060, \u0060int\u0060, \u0060uint\u0060, \u0060int64\u0060, \u0060uint64\u0060, \u0060nativeint\u0060, \u0060unativeint\u0060, \u0060float\u0060, \u0060float32\u0060, \u0060char\u0060, \u0060string\u0060, \u0060unit\u0060, \u0060decimal\u0060)\n \n - \u0060ResizeArrays\u0060 and \u0060Dictionaries\u0060 containing any combination of basic F# types\n \n - \u0060Dictionaries\u0060 containing \u0060DynamicObj\u0060 as keys or values in any combination with \u0060DynamicObj\u0060 or basic F# types as keys or values\n \n - \u0060array\u003CDynamicObj\u003E\u0060, \u0060list\u003CDynamicObj\u003E\u0060, \u0060ResizeArray\u003CDynamicObj\u003E\u0060: These collections of DynamicObj are copied as a new collection with recursively deep copied elements.\n \n - \u0060System.ICloneable\u0060: If the property implements \u0060ICloneable\u0060, the \u0060Clone()\u0060 method is called on the property.\n \n - \u0060DynamicObj\u0060 (and derived classes): properties that are themselves \u0060DynamicObj\u0060 instances are deep copied recursively.\n if a derived class has static properties (e.g. instance properties), these can be copied as dynamic properties on the new instance or ignored.\n \n Note on Classes that inherit from \u0060DynamicObj\u0060:\n \n Classes that inherit from DynamicObj will match the \u0060DynamicObj\u0060 typecheck if they do not implement \u0060ICloneable\u0060.\n The deep copied instances will be cast to \u0060DynamicObj\u0060 with deep copied dynamic properties. Staic/instance properties can be copied as dynamic properties on the new instance or be ignored.\n It should be possible to \u0027recover\u0027 the original type by checking if the needed properties exist as dynamic properties,\n and then passing them to the class constructor if needed.\n ","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-dynamicobj.html#DeepCopyPropertiesTo","title":"DynamicObj.DeepCopyPropertiesTo","content":"DynamicObj.DeepCopyPropertiesTo \nDeepCopyPropertiesTo \n\n Recursively deep copies **all** (static and dynamic) properties to a **target** \u0060DynamicObj\u0060 instance (or derived class). Reinstantiation - and therefore prevention of reference equality - is possible for \u0060DynamicObj\u0060, \u0060array|list|ResizeArray\u003CDynamicObj\u003E\u0060, and classes implementing \u0060System.Icloneable\u0060\n \n As many properties as possible are re-instantiated as new objects, meaning the \n copy has as little reference equal properties as possible.\n \n The nature of DynamicObj however means that it is impossible to reliably deep copy all properties, as\n their type is not known on runtime and the contructors of the types are not known.\n\n The following cases are handled (in this precedence):\n\n - Basic F# types (\u0060bool\u0060, \u0060byte\u0060, \u0060sbyte\u0060, \u0060int16\u0060, \u0060uint16\u0060, \u0060int\u0060, \u0060uint\u0060, \u0060int64\u0060, \u0060uint64\u0060, \u0060nativeint\u0060, \u0060unativeint\u0060, \u0060float\u0060, \u0060float32\u0060, \u0060char\u0060, \u0060string\u0060, \u0060unit\u0060, \u0060decimal\u0060)\n \n - \u0060ResizeArrays\u0060 and \u0060Dictionaries\u0060 containing any combination of basic F# types\n \n - \u0060Dictionaries\u0060 containing \u0060DynamicObj\u0060 as keys or values in any combination with \u0060DynamicObj\u0060 or basic F# types as keys or values\n \n - \u0060array\u003CDynamicObj\u003E\u0060, \u0060list\u003CDynamicObj\u003E\u0060, \u0060ResizeArray\u003CDynamicObj\u003E\u0060: These collections of DynamicObj are copied as a new collection with recursively deep copied elements.\n \n - \u0060System.ICloneable\u0060: If the property implements \u0060ICloneable\u0060, the \u0060Clone()\u0060 method is called on the property.\n \n - \u0060DynamicObj\u0060 (and derived classes): properties that are themselves \u0060DynamicObj\u0060 instances are deep copied recursively.\n if a derived class has static properties (e.g. instance properties), these can be copied as dynamic properties on the new instance or ignored.\n \n Note on Classes that inherit from \u0060DynamicObj\u0060:\n \n Classes that inherit from DynamicObj will match the \u0060DynamicObj\u0060 typecheck if they do not implement \u0060ICloneable\u0060.\n The deep copied instances will be cast to \u0060DynamicObj\u0060 with deep copied dynamic properties. Staic/instance properties can be copied as dynamic properties on the new instance or be ignored.\n It should be possible to \u0027recover\u0027 the original type by checking if the needed properties exist as dynamic properties,\n and then passing them to the class constructor if needed.\n ","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-dynamicobj.html#GetProperties","title":"DynamicObj.GetProperties","content":"DynamicObj.GetProperties \nGetProperties \n\n Returns a sequence of all dynamic properties as a key value pair of the property names and the boxed property values.\n\n When includeInstanceProperties is set to true, instance properties (= \u0027static\u0027 properties on the class) are included in the result.\n ","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-dynamicobj.html#GetPropertyHelpers","title":"DynamicObj.GetPropertyHelpers","content":"DynamicObj.GetPropertyHelpers \nGetPropertyHelpers \n\n Returns PropertyHelpers for all dynamic properties of the DynamicObj.\n\n When includeInstanceProperties is set to true, instance properties (= \u0027static\u0027 properties on the class) are included in the result.\n ","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-dynamicobj.html#GetPropertyNames","title":"DynamicObj.GetPropertyNames","content":"DynamicObj.GetPropertyNames \nGetPropertyNames \n\n Returns a sequence of all dynamic property names.\n\n When includeInstanceProperties is set to true, instance properties (= \u0027static\u0027 properties on the class) are included in the result.\n ","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-dynamicobj.html#GetPropertyValue","title":"DynamicObj.GetPropertyValue","content":"DynamicObj.GetPropertyValue \nGetPropertyValue \n\n Returns the boxed property value of the dynamic (or static) property with the given name.\n ","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-dynamicobj.html#ReferenceEquals","title":"DynamicObj.ReferenceEquals","content":"DynamicObj.ReferenceEquals \nReferenceEquals \n","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-dynamicobj.html#RemoveProperty","title":"DynamicObj.RemoveProperty","content":"DynamicObj.RemoveProperty \nRemoveProperty \n\n Removes any dynamic property with the given name from the input DynamicObj.\n If the property is static and mutable, it will be set to null.\n Static immutable properties cannot be removed.\n ","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-dynamicobj.html#SetProperty","title":"DynamicObj.SetProperty","content":"DynamicObj.SetProperty \nSetProperty \n\n Sets the dynamic (or static) property value with the given name, creating a new dynamic property if none exists.\n ","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-dynamicobj.html#ShallowCopyDynamicProperties","title":"DynamicObj.ShallowCopyDynamicProperties","content":"DynamicObj.ShallowCopyDynamicProperties \nShallowCopyDynamicProperties \n Copies all dynamic properties to a new \u0060DynamicObj\u0060 instance without trying to prevent reference equality.\n\n Note that this function does not attempt to do any deep copying. \n The dynamic properties of the source will be copied as references to the target. \n If any of those properties are mutable or themselves DynamicObj instances, changes to the properties on the source will be reflected in the target.","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-dynamicobj.html#ShallowCopyDynamicPropertiesTo","title":"DynamicObj.ShallowCopyDynamicPropertiesTo","content":"DynamicObj.ShallowCopyDynamicPropertiesTo \nShallowCopyDynamicPropertiesTo \n\n Copies all dynamic properties to a target \u0060DynamicObj\u0060 instance without trying to prevent reference equality.\n\n Note that this function does not attempt to do any deep copying. \n The dynamic properties of the source will be copied as references to the target. \n If any of those properties are mutable or themselves DynamicObj instances, changes to the properties on the source will be reflected in the target.\n\n If overWrite is set to true, existing properties on the target object will be overwritten.\n ","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-dynamicobj.html#StructurallyEquals","title":"DynamicObj.StructurallyEquals","content":"DynamicObj.StructurallyEquals \nStructurallyEquals \n","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-dynamicobj.html#TryGetDynamicPropertyHelper","title":"DynamicObj.TryGetDynamicPropertyHelper","content":"DynamicObj.TryGetDynamicPropertyHelper \nTryGetDynamicPropertyHelper \n\n Returns Some(PropertyHelper) if a dynamic property with the given name exists, otherwise None.\n ","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-dynamicobj.html#TryGetPropertyHelper","title":"DynamicObj.TryGetPropertyHelper","content":"DynamicObj.TryGetPropertyHelper \nTryGetPropertyHelper \n\n Returns Some(PropertyHelper) if a property (static or dynamic) with the given name exists, otherwise None.\n ","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-dynamicobj.html#TryGetPropertyValue","title":"DynamicObj.TryGetPropertyValue","content":"DynamicObj.TryGetPropertyValue \nTryGetPropertyValue \n\n Returns Some(boxed property value) if a dynamic (or static) property with the given name exists, otherwise None.\n ","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-dynamicobj.html#TryGetStaticPropertyHelper","title":"DynamicObj.TryGetStaticPropertyHelper","content":"DynamicObj.TryGetStaticPropertyHelper \nTryGetStaticPropertyHelper \n\n Returns Some(PropertyHelper) if a static property with the given name exists, otherwise None.\n ","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-dynamicobj.html#TryGetTypedPropertyValue","title":"DynamicObj.TryGetTypedPropertyValue","content":"DynamicObj.TryGetTypedPropertyValue \nTryGetTypedPropertyValue \n\n Returns Some(\u0027TPropertyValue) when a dynamic (or static) property with the given name and type exists, otherwise None.\n\n This method is not Fable-compatible and can therefore not be used in code that will be transpiled.\n \nThis method is not Fable-compatible and can therefore not be used in code that will be transpiled.","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-dynamicobj.html#Properties","title":"DynamicObj.Properties","content":"DynamicObj.Properties \nProperties \n A dictionary of dynamic boxed properties","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-dynamicobj.html#ofDict","title":"DynamicObj.ofDict","content":"DynamicObj.ofDict \nofDict \n\n Creates a new DynamicObj from a Dictionary containing dynamic properties.\n ","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-dynamicobj.html#(?)","title":"DynamicObj.(?)","content":"DynamicObj.(?) \n(?) \n\n Operator to access a property by name\n\n This method is not Fable-compatible and can therefore not be used in code that will be transpiled.\n \nThis method is not Fable-compatible and can therefore not be used in code that will be transpiled.","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-dynamicobj.html#(?\u003C-)","title":"DynamicObj.(?\u003C-)","content":"DynamicObj.(?\u003C-) \n(?\u003C-) \n\n Operator to set a property value\n\n This method is not Fable-compatible and can therefore not be used in code that will be transpiled.\n \nThis method is not Fable-compatible and can therefore not be used in code that will be transpiled.","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-hashutils.html","title":"HashUtils","content":"HashUtils \n \nHashUtils.deepHash \ndeepHash","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-hashutils.html#deepHash","title":"HashUtils.deepHash","content":"HashUtils.deepHash \ndeepHash \n","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-propertyhelper.html","title":"PropertyHelper","content":"PropertyHelper \n \nPropertyHelper.fromPropertyInfo \nfromPropertyInfo \nPropertyHelper.Name \nName \nPropertyHelper.IsStatic \nIsStatic \nPropertyHelper.IsDynamic \nIsDynamic \nPropertyHelper.IsMutable \nIsMutable \nPropertyHelper.IsImmutable \nIsImmutable \nPropertyHelper.GetValue \nGetValue \nPropertyHelper.SetValue \nSetValue \nPropertyHelper.RemoveValue \nRemoveValue","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-propertyhelper.html#fromPropertyInfo","title":"PropertyHelper.fromPropertyInfo","content":"PropertyHelper.fromPropertyInfo \nfromPropertyInfo \n","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-propertyhelper.html#Name","title":"PropertyHelper.Name","content":"PropertyHelper.Name \nName \n","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-propertyhelper.html#IsStatic","title":"PropertyHelper.IsStatic","content":"PropertyHelper.IsStatic \nIsStatic \n","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-propertyhelper.html#IsDynamic","title":"PropertyHelper.IsDynamic","content":"PropertyHelper.IsDynamic \nIsDynamic \n","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-propertyhelper.html#IsMutable","title":"PropertyHelper.IsMutable","content":"PropertyHelper.IsMutable \nIsMutable \n","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-propertyhelper.html#IsImmutable","title":"PropertyHelper.IsImmutable","content":"PropertyHelper.IsImmutable \nIsImmutable \n","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-propertyhelper.html#GetValue","title":"PropertyHelper.GetValue","content":"PropertyHelper.GetValue \nGetValue \n","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-propertyhelper.html#SetValue","title":"PropertyHelper.SetValue","content":"PropertyHelper.SetValue \nSetValue \n","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-propertyhelper.html#RemoveValue","title":"PropertyHelper.RemoveValue","content":"PropertyHelper.RemoveValue \nRemoveValue \n","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-operators.html","title":"Operators","content":"Operators \n \nOperators.(\u002B\u002B) \n(\u002B\u002B) \nOperators.(--) \n(--) \nOperators.(\u002B\u002B?) \n(\u002B\u002B?) \nOperators.(\u002B\u002B??) \n(\u002B\u002B??)","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-operators.html#(\u002B\u002B)","title":"Operators.(\u002B\u002B)","content":"Operators.(\u002B\u002B) \n(\u002B\u002B) \n Returns an instance with:\n 1. this property added if it wasn\u0027t present\n 2. this property updated otherwise","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-operators.html#(--)","title":"Operators.(--)","content":"Operators.(--) \n(--) \n Returns an instance:\n 1. the same if there was no requested property\n 2. without the requested property if there was","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-operators.html#(\u002B\u002B?)","title":"Operators.(\u002B\u002B?)","content":"Operators.(\u002B\u002B?) \n(\u002B\u002B?) \n Acts as (\u002B\u002B) if the value is Some,\n returns the same object otherwise","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-operators.html#(\u002B\u002B??)","title":"Operators.(\u002B\u002B??)","content":"Operators.(\u002B\u002B??) \n(\u002B\u002B??) \n Acts as (\u002B\u002B?) but maps the valid value \n through the last argument","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-immutabledynamicobj.html","title":"ImmutableDynamicObj","content":"ImmutableDynamicObj \n Represents an DynamicObj\u0027s counterpart\n with immutability enabled only. \nImmutableDynamicObj.\u0060\u0060.ctor\u0060\u0060 \n\u0060\u0060.ctor\u0060\u0060 \nImmutableDynamicObj.\u0060\u0060.ctor\u0060\u0060 \n\u0060\u0060.ctor\u0060\u0060 \nImmutableDynamicObj.TryGetTypedValue \nTryGetTypedValue \nImmutableDynamicObj.TryGetValue \nTryGetValue \nImmutableDynamicObj.Item \nItem \nImmutableDynamicObj.add \nadd \nImmutableDynamicObj.addOpt \naddOpt \nImmutableDynamicObj.addOptBy \naddOptBy \nImmutableDynamicObj.combineWith \ncombineWith \nImmutableDynamicObj.format \nformat \nImmutableDynamicObj.print \nprint \nImmutableDynamicObj.remove \nremove \nImmutableDynamicObj.empty \nempty","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-immutabledynamicobj.html#\u0060\u0060.ctor\u0060\u0060","title":"ImmutableDynamicObj.\u0060\u0060.ctor\u0060\u0060","content":"ImmutableDynamicObj.\u0060\u0060.ctor\u0060\u0060 \n\u0060\u0060.ctor\u0060\u0060 \n Empty instance","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-immutabledynamicobj.html#\u0060\u0060.ctor\u0060\u0060","title":"ImmutableDynamicObj.\u0060\u0060.ctor\u0060\u0060","content":"ImmutableDynamicObj.\u0060\u0060.ctor\u0060\u0060 \n\u0060\u0060.ctor\u0060\u0060 \n","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-immutabledynamicobj.html#TryGetTypedValue","title":"ImmutableDynamicObj.TryGetTypedValue","content":"ImmutableDynamicObj.TryGetTypedValue \nTryGetTypedValue \n","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-immutabledynamicobj.html#TryGetValue","title":"ImmutableDynamicObj.TryGetValue","content":"ImmutableDynamicObj.TryGetValue \nTryGetValue \n","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-immutabledynamicobj.html#Item","title":"ImmutableDynamicObj.Item","content":"ImmutableDynamicObj.Item \nItem \n Indexes ; if no key found, throws","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-immutabledynamicobj.html#add","title":"ImmutableDynamicObj.add","content":"ImmutableDynamicObj.add \nadd \n Returns an instance with:\n 1. this property added if it wasn\u0027t present\n 2. this property updated otherwise","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-immutabledynamicobj.html#addOpt","title":"ImmutableDynamicObj.addOpt","content":"ImmutableDynamicObj.addOpt \naddOpt \n Acts as add if the value is Some,\n returns the same object otherwise","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-immutabledynamicobj.html#addOptBy","title":"ImmutableDynamicObj.addOptBy","content":"ImmutableDynamicObj.addOptBy \naddOptBy \n Acts as addOpt but maps the valid value \n through the last argument","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-immutabledynamicobj.html#combineWith","title":"ImmutableDynamicObj.combineWith","content":"ImmutableDynamicObj.combineWith \ncombineWith \nMerges the second ImmutableDynamicObj into the first one (that is, keeps the first one\u0027s type). \nWarning: In case of duplicate property names the members of the second object override those of the first.","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-immutabledynamicobj.html#format","title":"ImmutableDynamicObj.format","content":"ImmutableDynamicObj.format \nformat \n","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-immutabledynamicobj.html#print","title":"ImmutableDynamicObj.print","content":"ImmutableDynamicObj.print \nprint \n","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-immutabledynamicobj.html#remove","title":"ImmutableDynamicObj.remove","content":"ImmutableDynamicObj.remove \nremove \n Returns an instance:\n 1. the same if there was no requested property\n 2. without the requested property if there was","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-immutabledynamicobj.html#empty","title":"ImmutableDynamicObj.empty","content":"ImmutableDynamicObj.empty \nempty \n","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-immutabledynamicobjextensions.html","title":"ImmutableDynamicObjExtensions","content":"ImmutableDynamicObjExtensions \n \nImmutableDynamicObjExtensions.AddItem \nAddItem \nImmutableDynamicObjExtensions.Format \nFormat \nImmutableDynamicObjExtensions.Print \nPrint \nImmutableDynamicObjExtensions.RemoveItem \nRemoveItem","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-immutabledynamicobjextensions.html#AddItem","title":"ImmutableDynamicObjExtensions.AddItem","content":"ImmutableDynamicObjExtensions.AddItem \nAddItem \n Returns an instance with:\n 1. this property added if it wasn\u0027t present\n 2. this property updated otherwise\n use this one only from C#","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-immutabledynamicobjextensions.html#Format","title":"ImmutableDynamicObjExtensions.Format","content":"ImmutableDynamicObjExtensions.Format \nFormat \n","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-immutabledynamicobjextensions.html#Print","title":"ImmutableDynamicObjExtensions.Print","content":"ImmutableDynamicObjExtensions.Print \nPrint \n","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-immutabledynamicobjextensions.html#RemoveItem","title":"ImmutableDynamicObjExtensions.RemoveItem","content":"ImmutableDynamicObjExtensions.RemoveItem \nRemoveItem \n Returns an instance:\n 1. the same if there was no requested property\n 2. without the requested property if there was\n use this one only from C#","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-immutabledynamicobjjsonconverter.html","title":"ImmutableDynamicObjJsonConverter","content":"ImmutableDynamicObjJsonConverter \n \nImmutableDynamicObjJsonConverter.\u0060\u0060.ctor\u0060\u0060 \n\u0060\u0060.ctor\u0060\u0060","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/reference/dynamicobj-immutabledynamicobjjsonconverter.html#\u0060\u0060.ctor\u0060\u0060","title":"ImmutableDynamicObjJsonConverter.\u0060\u0060.ctor\u0060\u0060","content":"ImmutableDynamicObjJsonConverter.\u0060\u0060.ctor\u0060\u0060 \n\u0060\u0060.ctor\u0060\u0060 \n","headings":[],"type":"apiDocs"},{"uri":"https://csbiology.github.io/DynamicObj/index.html","title":"DynamicObj\r\n","content":"DynamicObj\r\nThe primary use case of DynamicObj is the extension of F# classes with dynamic properties.\r\nThis is useful when you want to add arbitrarily typed properties to a class at runtime.\r\n\r\nWhy would you want to do that?\r\n\r\nYes, The type system is one of the core strengths of F#, and it is awesome.\r\nHowever, there are cases where a static domain model is either unfeasible or not flexible enough, especially when interfacing with dynamic languages such as JavaScript or Python.\r\nDynamicObj is transpilable into JS and Python via Fable, meaning you can use it to create classes that are usable in both .NET and those languages, while making their usage (e.g., the setting of dynamic properties) both safe in .NET and idiomatic in JS/Python.\r\nGet started\r\n#r \u0026quot;nuget: Fable.Core\u0026quot; // Needed if working with Fable\r\n\r\nopen DynamicObj\r\nopen Fable.Core // Needed if working with Fable\r\n\r\n[\u0026lt;AttachMembers\u0026gt;] // AttachMembers needed if working with Fable\r\ntype Person(id : int, name : string) =\r\n \r\n // Include this in your class\r\n inherit DynamicObj()\r\n\r\n // Mutable static property\r\n let mutable _name = name\r\n member this.Name\r\n with get() = _name\r\n and set(value) = _name \u0026lt;- value\r\n\r\n // Immutable static property\r\n member this.ID \r\n with get() = id\r\n\r\nlet p = Person(1337,\u0026quot;John\u0026quot;)\r\n\r\nAccessing static and dynamic properties\r\nAny class inheriting from DynamicObj can have static and dynamic properties, and both are accessible via various instance methods.\r\nAccess Static Properties:\r\np.Name\r\n\r\n\u0022John\u0022\r\np.GetPropertyValue(\u0026quot;Name\u0026quot;)\r\n\r\n\u0022John\u0022\r\nOverwrite mutable static property\r\np.SetProperty(\u0026quot;Name\u0026quot;,\u0026quot;Jane\u0026quot;)\r\np.GetPropertyValue(\u0026quot;Name\u0026quot;)\r\n\r\n\u0022Jane\u0022\r\nYou cannot overwrite mutable static properties\r\np.SetProperty(\u0026quot;ID\u0026quot;,1234) // throws an excpection\r\n\r\np.GetPropertyValue(\u0026quot;ID\u0026quot;)\r\n\r\n1337\r\nSet dynamic properties\r\np.SetProperty(\u0026quot;Address\u0026quot;,\u0026quot;FunStreet\u0026quot;)\r\np.GetPropertyValue(\u0026quot;Address\u0026quot;)\r\n\r\n\u0022FunStreet\u0022\r\nSafe and typed access to dynamic properties\r\nNote that all properties returted by GetPropertyValue are boxed in .NET.\r\nIf you want to get the value in a typed manner, you can use the TryGetTypedPropertyValue method:\r\np.TryGetTypedPropertyValue\u0026lt;string\u0026gt;(\u0026quot;Name\u0026quot;)\r\n\r\nSome \u0022Jane\u0022\r\np.TryGetTypedPropertyValue\u0026lt;int\u0026gt;(\u0026quot;Name\u0026quot;)\r\n\r\n\u0026lt;null\u0026gt;\r\np.TryGetTypedPropertyValue\u0026lt;string\u0026gt;(\u0026quot;I Do Not Exist\u0026quot;)\r\n\r\n\u0026lt;null\u0026gt;\r\nAttention: the TryGetTypedPropertyValue method is not transpilable via Fable as it can only provide access to the types known at transpilation.\r\nHowever, You can use the respective module function to transpile typed dynamic member access.\r\nThe DynObj module\r\nThis module provides a lot of API functions that are not not desired as static methods on DynamicObj, as it would be confusing if they ended up on inheriting classes.\r\nIt also supports pipeline chaining.\r\np\r\n|\u0026gt; DynObj.tryGetTypedPropertyValue\u0026lt;int\u0026gt; \u0026quot;ID\u0026quot;\r\n\r\nSome 1337\r\np\r\n|\u0026gt; DynObj.withProperty \u0026quot;Another\u0026quot; \u0026quot;prop\u0026quot;\r\n|\u0026gt; DynObj.withProperty \u0026quot;Yes\u0026quot; 42\r\n|\u0026gt; DynObj.withoutProperty \u0026quot;Address\u0026quot;\r\n|\u0026gt; DynObj.withOptionalProperty \u0026quot;Maybe\u0026quot; (Some \u0026quot;yes\u0026quot;)\r\n|\u0026gt; DynObj.withOptionalProperty \u0026quot;Maybe not\u0026quot; None\r\n|\u0026gt; DynObj.format\r\n\r\n\u0022Name: Jane\r\nID: 1337\r\n?Maybe: yes\r\n?Another: prop\r\n?Yes: 42\u0022\r\nSerialization\r\nSerialization to a JSON string that contains both static and dynamic properties is supported out-of-the-box when using Newtonsoft.Json:\r\n#r \u0026quot;nuget: Newtonsoft.Json\u0026quot;\r\n\r\nopen Newtonsoft.Json\r\n\r\np\r\n|\u0026gt; JsonConvert.SerializeObject\r\n\r\n\u0022{\u0022Name\u0022:\u0022Jane\u0022,\u0022ID\u0022:1337,\u0022Maybe\u0022:\u0022yes\u0022,\u0022Another\u0022:\u0022prop\u0022,\u0022Yes\u0022:42}\u0022\r\n","headings":["DynamicObj","Get started","Accessing static and dynamic properties","Access Static Properties:","Overwrite mutable static property","You cannot overwrite mutable static properties","Set dynamic properties","Safe and typed access to dynamic properties","The DynObj module","Serialization"],"type":"content"}] \ No newline at end of file