firstItemAsRoot - true - configures
VarDictionary object to return the first item from the collection if
the Item property is used without index/key argument. false -
Value set to the Root property will be returned in this case.
Also if the firstItemAsRoot property is set to true
but collection is empty then Root will be returned. Default:
false
itemsAssignmentAllowed - true - allows
put/write operations through the Item property, false
- attempt to assign a value through the Item property will cause an
error. If the assignment is allowed the behavior of the Item
property is the same as the Set
member. Default: false
enumItems - true - enumerator returned by
the _NewEnum property will enumerate the collection items, false
- enumerator will enumerate the keys/item names. Default: false
allowUnnamedValues - true - allows
addition of unnamed items to the collection (see Add), false
- only named items can be added - if the key passed to the Add
member is an empty string or VT_EMPTY add operation will fail. Default:
false
allowDuplicateNames - true - allows
addition of the items with duplicate names, false - if the
name passed to the Add method is already used in the collection then
the operation will fail. Default: false
extractValues - true - attempts to extract value if
the assigned variable contains object. Recourses the objects if
needed and uses their default property/method. This affects all the
assignment operations except the Info property which remains
unchanged. This property allows you to instruct given collection to
accept only non-object elements. false - any assignment/add
value will succeed.
readOnly - true - all the Add/Set methods will
return error. false - normal behavior. This property may be
of some use in complex applications where one part passes
collections to another.
In most cases allowUnnamedValues and allowDuplicateNames
should be set to true or false together, because
allowing any count of unnamed items and only one item with a given
name may cause confusion. But this is not a requirement - only style
recommendation.
Another style recommendation: If the application can be separated
logically in two parts - first that creates and fills the collection
and second that accesses the items in it, then is recommended to set
these properties in the first part and not attempt to change their
values in the consuming part of the application. If the consuming
part of the application requires behavior change it is recommended
for it to restore the original values after finishing its work. Such
a dynamic change of the behavior of the collection can be a source
for errors in a multithreaded application, thus it is strongly
recommended to avoid such kind of techniques in it.