DynamicSymbol Class

Dynamic Symbol object.

Inheritance Hierarchy

SystemObject
  System.DynamicDynamicObject
    TwinCAT.TypeSystemDynamicSymbol
      TwinCAT.TypeSystemDynamicAliasInstance
      TwinCAT.TypeSystemDynamicArrayInstance
      TwinCAT.TypeSystemDynamicInterfaceInstance
      TwinCAT.TypeSystemDynamicPointerInstance
      TwinCAT.TypeSystemDynamicReferenceInstance
      TwinCAT.TypeSystemDynamicUnionInstance

Namespace: TwinCAT.TypeSystem
Assembly: TwinCAT.Ads (in TwinCAT.Ads.dll) Version: 7.0.0+e56d35ccc4675faac24789a4aab60071fc61d470

Syntax

C#

public class DynamicSymbol : DynamicObject, 
    IDynamicSymbol, ISymbol, IAttributedInstance, IInstance, IBitSize, 
    ISymbolFactoryServicesProvider, IValueSymbol, IValueRawSymbol, IHierarchicalSymbol, IValueAccessorProvider, 
    IContextMaskProvider

The DynamicSymbol type exposes the following members.

Properties

 

Name

Description

DynamicSymbol Class 1:

_InnerSymbol

Gets the inner symbol of this DynamicSymbol

DynamicSymbol Class 2:

AccessRights

Gets the access rights.

DynamicSymbol Class 3:

AllowIGIOAccess

Indicates, that the aggregates symbols is an IProcessImageAddress (and most probably IAdsSymbol)

DynamicSymbol Class 4:

Attributes

Gets the Symbol Attributes

DynamicSymbol Class 5:

BitSize

Gets the size of the IDataType in bits.

DynamicSymbol Class 6:

ByteSize

Gets the (aligned) size of of the Type/Instance in Bytes

DynamicSymbol Class 7:

Category

Gets the category.

DynamicSymbol Class 8:

Comment

Gets the comment of the IInstance

DynamicSymbol Class 9:

Connection

Gets the connection bound to this DynamicSymbol

DynamicSymbol Class 10:

DataType

Gets the IDataType of the IInstance.

DynamicSymbol Class 11:

HasValue

Gets a value indicating whether this instance has value (only the non VirtualInstances, what means the Symbols with locations).

DynamicSymbol Class 12:

InstanceName

Gets the name of the instance (without periods (.)

DynamicSymbol Class 13:

InstancePath

Gets the relative / absolute access path to the instance (with periods (.))

DynamicSymbol Class 14:

IsBitType

Gets a value indicating whether this instance is not basing on a full DataType but instead of some sort of bit mapping

DynamicSymbol Class 15:

IsByteAligned

Indicates that the Size of the Object is Byte aligned (BitSize % 8 == 0)

DynamicSymbol Class 16:

IsContainerType

Gets a value indicating whether this Symbol is acontainer type.

DynamicSymbol Class 17:

IsPersistent

Gets a value indicating whether this ISymbol is persistent.

DynamicSymbol Class 18:

IsPointer

Indicates that the IInstance represents a Pointer type (Pointer TO)

DynamicSymbol Class 19:

IsPrimitiveType

Gets a value indicating whether this instance is a primitive type.

DynamicSymbol Class 20:

IsProperty

Gets a value indicating whether IInstance is a property.

DynamicSymbol Class 21:

IsReadOnly

Indicates that this instance is read only.

DynamicSymbol Class 22:

IsRecursive

Gets a value indicating whether this instance is recursive.

DynamicSymbol Class 23:

IsReference

Indicates that the IInstance represents a Reference type (REFERENCE TO)

DynamicSymbol Class 24:

IsStatic

Gets a value indicating whether this instance is static.

DynamicSymbol Class 25:

NormalizedName

Gets the normalized instance name (fixed name for dynamic property access that doesn't contain invalid characters),

DynamicSymbol Class 26:

NotificationSettings

Gets the notification settings.

DynamicSymbol Class 27:

Parent

Gets the parent Symbol

DynamicSymbol Class 28:

Size

Gets the size of the IInstance in bytes.

DynamicSymbol Class 29:

SubSymbols

Gets the SubSymbols of the ISymbol

DynamicSymbol Class 30:

TypeName

Gets the name of the DataType that is used for this IInstance.

DynamicSymbol Class 31:

ValueEncoding

Gets the value encoding.

Methods

 

Name

Description

DynamicSymbol Class 32:

Equals

Equals
(Overrides ObjectEquals(Object))

DynamicSymbol Class 33:

Finalize

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

DynamicSymbol Class 34:

GetDynamicMemberNames

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

DynamicSymbol Class 35:

GetHashCode

Gets the HashCode of the Address
(Overrides ObjectGetHashCode)

DynamicSymbol Class 36:

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)

DynamicSymbol Class 37:

GetType

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

DynamicSymbol Class 38:

MemberwiseClone

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

DynamicSymbol Class 39:

OnReadAnyValue

Handler function for reading ADS 'Any' Values.

DynamicSymbol Class 40:

OnReadRawValue

Handler function for reading Raw symbol value.

DynamicSymbol Class 41:

OnReadRawValueAsync

Handler function reading the raw value of the DynamicSymbol.

DynamicSymbol Class 42:

OnReadValue

Handler function for the

DynamicSymbol Class 43:

OnReadValueAsync

Handler function reading the DynamicSymbols value asynchronously.

DynamicSymbol Class 44:

OnSetInstanceName

Sets a new InstanceName InstancePath

DynamicSymbol Class 45:

OnTryReadValue

Handler function for the

DynamicSymbol Class 46:

OnTryWriteValue

Handler Function for writing value.

DynamicSymbol Class 47:

OnWriteRawValue

Handler function for reading symbols raw value.

DynamicSymbol Class 48:

OnWriteRawValueAsync

Handler function for writing the raw DynamicSymbol value.

DynamicSymbol Class 49:

OnWriteValue

Handler Function for writing value.

DynamicSymbol Class 50:

OnWriteValueAsync

Handler Function for writing value.

DynamicSymbol Class 51:

ReadAnyValue

Reads the value of this Value into a new created instance of the managed type

DynamicSymbol Class 52:

ReadRawValue

Reads the raw value of the IValueSymbol (Ads Read / Write)

DynamicSymbol Class 53:

ReadRawValue(Int32)

Reads the Symbols raw value

DynamicSymbol Class 54:

ReadRawValueAsync

Read raw value as an asynchronous operation.

DynamicSymbol Class 55:

ReadValue

Reads the value of this DynamicSymbol.

DynamicSymbol Class 56:

ReadValue(Int32)

Reads the value of this DynamicSymbol.

DynamicSymbol Class 57:

ReadValueAsync

Reads the Value of the IValueSymbol asynchronously.

DynamicSymbol Class 58:

ToString

Returns a String that represents this instance.
(Overrides ObjectToString)

DynamicSymbol Class 59:

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)

DynamicSymbol Class 60:

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.
(Inherited from DynamicObject)

DynamicSymbol Class 61:

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)

DynamicSymbol Class 62:

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)

DynamicSymbol Class 63:

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)

DynamicSymbol Class 64:

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.
(Inherited from DynamicObject)

DynamicSymbol Class 65:

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 DynamicObjectTryGetMember(GetMemberBinder, Object))

DynamicSymbol Class 66:

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.
(Inherited from DynamicObject)

DynamicSymbol Class 67:

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.
(Inherited from DynamicObject)

DynamicSymbol Class 68:

TryReadValue

Reads the Value of the IValueSymbol

DynamicSymbol Class 69:

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.
(Inherited from DynamicObject)

DynamicSymbol Class 70:

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.
(Inherited from DynamicObject)

DynamicSymbol Class 71:

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)

DynamicSymbol Class 72:

DynamicSymbol Class 73:

TryWriteValue

Writes the specified value to the DynamicSymbol.

DynamicSymbol Class 74:

UpdateAnyValue

Reads the value of this Value into the specified managed value.

DynamicSymbol Class 75:

WriteAnyValue

Writes the value represented by the managed value to this Value

DynamicSymbol Class 76:

WriteRawValue(Byte)

Writes the raw value of the IValueSymbol (Ads Read / Write)

DynamicSymbol Class 77:

WriteRawValue(Byte, Int32)

Writes the raw value of the IValueSymbol (Ads Read / Write)

DynamicSymbol Class 78:

WriteRawValueAsync

Writes the raw value of the IValueSymbol (Ads Read / Write)

DynamicSymbol Class 79:

WriteValue(Object)

Writes the specified value to the DynamicSymbol.

DynamicSymbol Class 80:

DynamicSymbol Class 81:

WriteValue(Object, Int32)

Writes the specified value to the DynamicSymbol.

DynamicSymbol Class 82:

WriteValueAsync

Writes the Value of the IValueSymbol

Events

 

Name

Description

DynamicSymbol Class 83:

RawValueChanged

Occurs when the RawValue of the IValueSymbol has changed.

DynamicSymbol Class 84:

ValueChanged

Occurs when the value of the IValueSymbol has changed.

Operators

 

Name

Description

DynamicSymbol Class 85:

DynamicSymbol Class 86:

Equality(DynamicSymbol, DynamicSymbol)

Operator==

DynamicSymbol Class 87:

DynamicSymbol Class 88:

Inequality(DynamicSymbol, DynamicSymbol)

Implements the != operator.

Fields

 

Name

Description

DynamicSymbol Class 89:

syncObject

Synchronization object

Extension Methods

 

Name

Description

 

HasExternalDataReferences

Indicates, that the Instance value includes process memory data, that cannot be read in one memory block.
(Defined by DataTypeExtension)

 

IsExternalDataReference

Indicates, that the field is static or is not part of the parents processimage memory location
(Defined by DataTypeExtension)

 

PollValues

Poll symbol values on trigger signals.
(Defined by ValueSymbolExtensions)

 

 

PollValues

Polls the symbol as value sequence of object values with a specified period time.
(Defined by ValueSymbolExtensions)

 

PollValues

Polls symbol values on trigger signals.
(Defined by ValueSymbolExtensions)

 

 

PollValues

Polls the symbol as value sequence of object values with a specified period time.
(Defined by ValueSymbolExtensions)

 

PollValuesT

Poll symbol values as a value sequence on trigger signals (typed)
(Defined by ValueSymbolExtensions)

 

 

PollValuesT

Polls the symbol as value sequence of object values with a specified period time (typed)
(Defined by ValueSymbolExtensions)

 

 

PollValuesT

Poll symbol values on trigger signals (typed)
(Defined by ValueSymbolExtensions)

 

PollValuesT

Poll symbol values on trigger signals (typed)
(Defined by ValueSymbolExtensions)

 

PollValuesT

Polls the symbol as value sequence of object values with a specified period time (typed)
(Defined by ValueSymbolExtensions)

 

PollValues2

Poll symbol values as a sequence of annotated results (Value + ErrorCode)
(Defined by ValueSymbolExtensions)

 

PollValues2

Poll symbol values with communication return codes.
(Defined by ValueSymbolExtensions)

 

Unwrap

Gets the Unwrapped Symbol
(Defined by SymbolExtensions)

 

 

WhenValueChanged

Gets an observable sequence when the value of the IValueSymbol has changed.
(Defined by ValueSymbolExtensions)

 

 

WriteValues

Subscribes the IValueSymbol to an observable sequence of values and writes them to the IValueSymbol.
(Defined by ValueSymbolExtensions)

 

WriteValues

Subscribes the IValueSymbol to an observable sequence of values and writes them to the IValueSymbol.
(Defined by ValueSymbolExtensions)

 

WriteValues

Subscribes the IValueSymbol to an observable sequence of values and writes them to the IValueSymbol.
(Defined by ValueSymbolExtensions)

 

WriteValues

Subscribes the IValueSymbol to an observable sequence of values and writes them to the IValueSymbol.
(Defined by ValueSymbolExtensions)

Remarks

The DynamicSymbol adds dynamic run time behaviour to the ISymbol/IValueSymbol. That means e.g. for StructSymbols that .NET Properties are defined and dispatched at runtime to the structs fields like they are defined in TwinCAT / ADS Types. Indexed access to Array Symbols is another example where the dynamic runtime support takes place.

Example

Sample for the dynamic resolution of Symbols:

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 IDynamicSymbol IValueSymbol ISymbol DynamicObject

Beckhoff Automation GmbH & Co. KG 2001-2026