DynamicSymbol Class

Dynamic Symbol object.

Inheritance Hierarchy

System.Object
  System.Dynamic.DynamicObject
    TwinCAT.TypeSystem.DynamicSymbol
      More...
Namespace:  TwinCAT.TypeSystem
Assembly:  TwinCAT.Ads (in TwinCAT.Ads.dll) Version: 4.3.0.0

Syntax

C#

public class DynamicSymbol : DynamicObject, 
    IDynamicSymbol, ISymbol, IAttributedInstance, IInstance, IBitSize, 
    IValueSymbol3, IValueSymbol2, IValueSymbol, IValueRawSymbol

VB

Public Class DynamicSymbol
    Inherits DynamicObject
    Implements IDynamicSymbol, ISymbol, IAttributedInstance, IInstance, 
    IBitSize, IValueSymbol3, IValueSymbol2, IValueSymbol, IValueRawSymbol

The DynamicSymbol type exposes the following members.

Properties

 

Name

Description

_InnerSymbol

Inner symbol object wrapped by this DynamicSymbol

AccessRights

Gets the access rights.

Attributes

Gets the Symbol Attributes

BitSize

Gets the size of the IDataType in bits.

ByteSize

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

Category

Gets the category.

Comment

Gets the comment of the IInstance

Connection

Gets the connection bound to this DynamicSymbol

ContextMask

Gets the context mask.

DataType

Gets the IDataType of the IInstance.

HasValue

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

InstanceName

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

InstancePath

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

IsBitType

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

IsByteAligned

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

IsContainerType

Gets a value indicating whether this Symbol is acontainer type.

IsPersistent

Gets a value indicating whether this ISymbol is persistent.

IsPointer

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

IsPrimitiveType

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

IsReadOnly

Gets a value indicating whether this ISymbol is read only.

IsRecursive

Gets a value indicating whether this instance is recursive.

IsReference

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

IsStatic

Gets a value indicating whether this instance is static.

NormalizedName

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

NotificationSettings

Gets the notification settings.

Parent

Gets the parent Symbol

Size

Gets the size of the IInstance in bytes.

SubSymbols

Gets the SubSymbols of the ISymbol

TypeName

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

Methods

 

Name

Description

Equals

Equals (Overrides Object.Equals(Object).)

Finalize

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

GetDynamicMemberNames

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

GetHashCode

Gets the HashCode of the Address (Overrides Object.GetHashCode..)

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.)

GetType

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

MemberwiseClone

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

OnReadAnyValue

Handler function for reading ADS 'Any' Values.

OnReadRawValue

Handler function for reading Raw symbol value.

OnReadValue

Handler function for the

OnSetInstanceName

Sets a new InstanceName InstancePath

OnTryReadValue

Handler function for the

OnTryWriteValue

Handler Function for writing value.

OnWriteRawValue

Handler function for reading symbols raw value.

OnWriteValue

Handler Function for writing value.

ReadAnyValue

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

ReadRawValue.

Reads the Symbols raw value

ReadRawValue(Int32)

Reads the Symbols raw value

ReadValue.

Reads the value of this DynamicSymbol.

ReadValue(Int32)

Reads the value of this DynamicSymbol.

ToString

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

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.)

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.)

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.)

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.)

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.)

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.)

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.).)

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.)

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.)

TryReadValue

Reads the Value of the IValueSymbol

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.)

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.)

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.)

TryWriteValue

Writes the specified value to the DynamicSymbol.

UpdateAnyValue

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

WriteAnyValue

Writes the value represented by the managed value to this Value

WriteRawValue(.Byte.)

Writes the Symbol raw Value

WriteRawValue(.Byte., Int32)

Writes the Symbol raw Value

WriteValue(Object)

Writes the specified value to the DynamicSymbol.

WriteValue(Object, Int32)

Writes the specified value to the DynamicSymbol.

Events

 

Name

Description

RawValueChanged

Occurs when the RawValue of the IValueSymbol has changed.

ValueChanged

Occurs when the (Primitive) value of the IValueSymbol has changed.

Operators

 

Name

Description

Equality

Operator==

Inequality

Implements the != operator.

Fields

 

Name

Description

normalizedName

The normalized name of this .

Extension Methods

 

Name

Description

PollValuesAnnotated(IObservable.Unit.)

Overloaded.

Polls the values as ValueChangedArgs sequence annotated value on trigger sequence (Defined by ValueSymbolExtensions.)

PollValuesAnnotated(TimeSpan)

Overloaded.

Polls the values as ValueChangedArgs sequence with a specified period time. (Defined by ValueSymbolExtensions.)

WhenValueChanged

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

WriteValues(IObservable.Object.)

Overloaded.

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

WriteValues(IObservable.Object., Action.Exception.)

Overloaded.

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

WriteValues(IObservable.Object., CancellationToken)

Overloaded.

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

WriteValues(IObservable.Object., Action.Exception., CancellationToken)

Overloaded.

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.

Examples

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 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.IDynamicSymbol

TwinCAT.TypeSystem.IValueSymbol

TwinCAT.TypeSystem.ISymbol

System.Dynamic.DynamicObject

Inheritance Hierarchy

System.Object
  System.Dynamic.DynamicObject
    TwinCAT.TypeSystem.DynamicSymbol
      TwinCAT.TypeSystem.DynamicAliasInstance
      TwinCAT.TypeSystem.DynamicArrayInstance
      TwinCAT.TypeSystem.DynamicPointerInstance
      TwinCAT.TypeSystem.DynamicReferenceInstance
      TwinCAT.TypeSystem.DynamicStructInstance
      TwinCAT.TypeSystem.DynamicUnionInstance