DynamicValue Class

Dynamic value (uses RuntimeBinding for ISymbol value reading / writing).

Inheritance Hierarchy

System.Object
  System.Dynamic.DynamicObject
    TwinCAT.TypeSystem.DynamicValue
      TwinCAT.TypeSystem.DynamicArrayValue
      TwinCAT.TypeSystem.DynamicEnumValue
      TwinCAT.TypeSystem.DynamicPointerValue
      TwinCAT.TypeSystem.DynamicReferenceValue
Namespace:  TwinCAT.TypeSystem
Assembly:  TwinCAT.Ads (in TwinCAT.Ads.dll) Version: 6.0.328+39e3229

Syntax

C#

public class DynamicValue : DynamicObject, 
    IDynamicValue, IDynamicMetaObjectProvider, IValue, IStructValue, IArrayValue

The DynamicValue type exposes the following members.

Properties

 

Name

Description

DynamicValue Class 1:

Age

Gets the age of the value (last successful read of the value)

DynamicValue Class 2:

CachedRaw

Gets the cached Raw internal Data.

DynamicValue Class 3:

DataType

Gets the data type bound to this IValue

DynamicValue Class 4:

IsPrimitive

Gets a value indicating whether this IValue is a primitive value.

DynamicValue Class 5:

ParentValue

Gets the parent value.

DynamicValue Class 6:

ResolvedType

Gets the resolved type.

DynamicValue Class 7:

Symbol

Gets the symbol that is bound to this value.

DynamicValue Class 8:

TimeStamp

Gets the Time stamp of the last successful read of the Value.

DynamicValue Class 9:

UpdateMode

Gets / Sets the update mode

DynamicValue Class 10:

ValueFactory

The value factory

Methods

 

Name

Description

DynamicValue Class 11:

Equals

Determines whether the specified object is equal to the current object. (Inherited from Object.)

DynamicValue Class 12:

Finalize

Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection. (Inherited from Object.)

DynamicValue Class 13:

GetDynamicMemberNames

Returns the enumeration of all dynamic member names. (Overrides DynamicObject.GetDynamicMemberNames..)

DynamicValue Class 14:

GetHashCode

Serves as the default hash function. (Inherited from Object.)

DynamicValue Class 15:

GetMetaObject

Provides a DynamicMetaObject that dispatches to the dynamic virtual methods. The object can be encapsulated inside another DynamicMetaObject to provide custom behavior for individual actions. This method supports the Dynamic Language Runtime infrastructure for language implementers and it is not intended to be used directly from your code. (Inherited from DynamicObject.)

DynamicValue Class 16:

GetType

Gets the Type of the current instance. (Inherited from Object.)

DynamicValue Class 17:

MemberwiseClone

Creates a shallow copy of the current Object. (Inherited from Object.)

DynamicValue Class 18:

Read

Reads the value (via ADS)

DynamicValue Class 19:

ReadAsync

read as an asynchronous operation.

DynamicValue Class 20:

ResolveValue

Resolves the Value object to its primitive value.

DynamicValue Class 21:

setMemberValue

Writes the specified member element.

DynamicValue Class 22:

ToString

Returns a String that represents this instance. (Overrides Object.ToString..)

DynamicValue Class 23:

TryBinaryOperation

Provides implementation for binary operations. Classes derived from the DynamicObject class can override this method to specify dynamic behavior for operations such as addition and multiplication. (Inherited from DynamicObject.)

DynamicValue Class 24:

TryConvert

Provides implementation for type conversion operations. Classes derived from the DynamicObject class can override this method to specify dynamic behavior for operations that convert an object from one type to another. (Overrides DynamicObject.TryConvert(ConvertBinder, Object.).)

DynamicValue Class 25:

TryCreateInstance

Provides the implementation for operations that initialize a new instance of a dynamic object. This method is not intended for use in C# or Visual Basic. (Inherited from DynamicObject.)

DynamicValue Class 26:

TryDeleteIndex

Provides the implementation for operations that delete an object by index. This method is not intended for use in C# or Visual Basic. (Inherited from DynamicObject.)

DynamicValue Class 27:

TryDeleteMember

Provides the implementation for operations that delete an object member. This method is not intended for use in C# or Visual Basic. (Inherited from DynamicObject.)

DynamicValue Class 28:

TryGetArrayElementValues

Returns Array Element values.

DynamicValue Class 29:

TryGetIndex

Provides the implementation for operations that get a value by index. Classes derived from the DynamicObject class can override this method to specify dynamic behavior for indexing operations. (Overrides DynamicObject.TryGetIndex(GetIndexBinder, .Object., Object.).)

DynamicValue Class 30:

TryGetIndexValue(.Int32., Object.)

Reads the specified array element.

DynamicValue Class 31:

TryGetIndexValue(.Object., Object.)

Tries the get index value.

DynamicValue Class 32:

TryGetMember

Provides the implementation for operations that get member values. Classes derived from the DynamicObject class can override this method to specify dynamic behavior for operations such as getting a value for a property. (Overrides DynamicObject.TryGetMember(GetMemberBinder, Object.).)

DynamicValue Class 33:

TryGetMemberValue

Tries the get member value.

DynamicValue Class 34:

TryInvoke

Provides the implementation for operations that invoke an object. Classes derived from the DynamicObject class can override this method to specify dynamic behavior for operations such as invoking an object or a delegate. (Overrides DynamicObject.TryInvoke(InvokeBinder, .Object., Object.).)

DynamicValue Class 35:

TryInvokeMember

Provides the implementation for operations that invoke a member. Classes derived from the DynamicObject class can override this method to specify dynamic behavior for operations such as calling a method. (Overrides DynamicObject.TryInvokeMember(InvokeMemberBinder, .Object., Object.).)

DynamicValue Class 36:

TryResolveValue

Tries to resolves the Value object to its primitive value.

DynamicValue Class 37:

TrySetIndex

Provides the implementation for operations that set a value by index. Classes derived from the DynamicObject class can override this method to specify dynamic behavior for operations that access objects by a specified index. (Overrides DynamicObject.TrySetIndex(SetIndexBinder, .Object., Object).)

DynamicValue Class 38:

TrySetIndexValue(.Int32., Object)

Tries to set the indexed value on Arrays

DynamicValue Class 39:

TrySetIndexValue(.Object., Object)

Tries to set the indexed value on Arrays

DynamicValue Class 40:

TrySetMember

Provides the implementation for operations that set member values. Classes derived from the DynamicObject class can override this method to specify dynamic behavior for operations such as setting a value for a property. (Overrides DynamicObject.TrySetMember(SetMemberBinder, Object).)

DynamicValue Class 41:

TrySetMemberValue

Tries to Set a Member/Property Value

DynamicValue Class 42:

TryUnaryOperation

Provides implementation for unary operations. Classes derived from the DynamicObject class can override this method to specify dynamic behavior for operations such as negation, increment, or decrement. (Inherited from DynamicObject.)

DynamicValue Class 43:

Write

Writes the value (via ADS)

DynamicValue Class 44:

WriteAsync

write as an asynchronous operation.

Remarks

The DynamicValue adds dynamic run time behaviour to the IValueValue/IValue. That means e.g. for struct values that .NET Properties are on-the-fly defined and dispatched at runtime just like defined in the structs structs data type definition. Another example is the access of Array Element values through indexes.

Examples

Sample for the dynamic resolution of Symbols and reading values:

Dynamic Symbol access

/// <summary>
/// Defines the entry point of the application.
/// </summary>
/// <param name="args">The arguments.</param>
static async void Main(string[] args)
{
    // Get the AdsAddress from command-line arguments
    AmsAddress address = ArgParser.Parse(args);

    CancellationTokenSource cancelSource = new CancellationTokenSource();
    CancellationToken cancel = cancelSource.Token;

    using (AdsClient client = new AdsClient())
    {
    // Connect to the target device
    client.Connect(address);

    // Usage of "dynamic" Type and Symbols (>= .NET4 only)
    SymbolLoaderSettings settings = new SymbolLoaderSettings(SymbolsLoadMode.DynamicTree);
    IAdsSymbolLoader dynLoader = (IAdsSymbolLoader)SymbolLoaderFactory.Create(client, settings);

Reference

TwinCAT.TypeSystem Namespace

TwinCAT.TypeSystem.DynamicSymbol

System.Dynamic.DynamicObject

TwinCAT.TypeSystem.IValue