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 |
---|---|---|
|
Gets the age of the value (last successful read of the value) | |
|
Gets the cached Raw internal Data. | |
|
Gets the data type bound to this IValue | |
|
Gets a value indicating whether this IValue is a primitive value. | |
|
Gets the resolved type. | |
|
Gets the symbol that is bound to this value. | |
|
Gets the Time stamp of the last successful read of the Value. |
Methods
|
Name |
Description |
---|---|---|
|
Determines whether the specified object is equal to the current object. (Inherited from Object.) | |
|
Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection. (Inherited from Object.) | |
|
Returns the enumeration of all dynamic member names. (Overrides DynamicObject.GetDynamicMemberNames..) | |
|
Serves as the default hash function. (Inherited from Object.) | |
|
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.) | |
|
Gets the Type of the current instance. (Inherited from Object.) | |
|
Creates a shallow copy of the current Object. (Inherited from Object.) | |
|
Reads the value (via ADS) | |
|
Reads the specified member element. | |
|
Resolves the Value object to its primitive value. | |
|
Returns a String that represents this instance. (Overrides Object.ToString..) | |
|
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.) | |
|
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.).) | |
|
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.) | |
|
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.) | |
|
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.) | |
|
Returns Array Element values. | |
|
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.).) | |
|
Reads the specified array element. | |
|
Tries the get index value. | |
|
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.).) | |
|
Tries the get member value. | |
|
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.).) | |
|
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.).) | |
|
Tries to resolves the Value object to its primitive value. | |
|
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).) | |
|
Tries to set the indexed value on Arrays | |
|
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).) | |
|
Tries to Set a Member/Property Value | |
|
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.) | |
|
Writes the value (via ADS) | |
|
Writes the specified member element. |
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);