DynamicValue Class

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

Inheritance Hierarchy

System.Object
  System.Dynamic.DynamicObject
    TwinCAT.TypeSystem.DynamicValue
      TwinCAT.TypeSystem.DynamicPointerValue
      TwinCAT.TypeSystem.DynamicReferenceValue
Namespace:  TwinCAT.TypeSystem
Assembly:  TwinCAT.Ads (in TwinCAT.Ads.dll) Version: 4.3.0.0

Syntax

C#

public class DynamicValue : DynamicObject, 
    IValue, IStructValue, IArrayValue

VB

Public Class DynamicValue
    Inherits DynamicObject
    Implements 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:

ResolvedType

Gets the resolved type.

DynamicValue Class 6:

Symbol

Gets the symbol that is bound to this value.

DynamicValue Class 7:

UtcTimeStamp

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

Methods

 

Name

Description

DynamicValue Class 8:

Equals

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

DynamicValue Class 9:

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 10:

GetDynamicMemberNames

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

DynamicValue Class 11:

GetHashCode

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

DynamicValue Class 12:

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 13:

GetType

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

DynamicValue Class 14:

MemberwiseClone

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

DynamicValue Class 15:

Read

Reads the value (via ADS)

DynamicValue Class 16:

ReadMember

Reads the specified member element.

DynamicValue Class 17:

ResolveValue

Resolves the Value object to its primitive value.

DynamicValue Class 18:

ToString

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

DynamicValue Class 19:

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 20:

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 21:

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 22:

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 23:

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 24:

TryGetArrayElementValues

Returns Array Element values.

DynamicValue Class 25:

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 26:

TryGetIndexValue(.Int32., Object.)

Reads the specified array element.

DynamicValue Class 27:

TryGetIndexValue(.Object., Object.)

Tries the get index value.

DynamicValue Class 28:

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 29:

TryGetMemberValue

Tries the get member value.

DynamicValue Class 30:

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 31:

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 32:

TryResolveValue

Tries to resolves the Value object to its primitive value.

DynamicValue Class 33:

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 34:

TrySetIndexValue

Tries to set the indexed value on Arrays

DynamicValue Class 35:

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 36:

TrySetMemberValue

Tries to Set a Member/Property Value

DynamicValue Class 37:

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 38:

Write

Writes the value (via ADS)

DynamicValue Class 39:

WriteMember

Writes the specified member element.

Fields

 

Name

Description

DynamicValue Class 40:

_symbol

Symbol that is bound to this value.

DynamicValue Class 41:

valueFactory

The value factory

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 void Main(string[] args)
{
    // Get the AdsAddress from command-line arguments
    AmsAddress address = ArgParser.Parse(args);

    using (TcAdsClient client = new TcAdsClient())
    {
    // 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