AFValue.SetAnnotation Method
- Last UpdatedJan 12, 2026
- 4 minute read
- PI System
- AF SDK 3.2.0
- Developer
Associates an annotation with this AF value.
Namespace: OSIsoft.AF.Asset
Assembly: OSIsoft.AFSDK (in OSIsoft.AFSDK.dll) Version: 3.2.0.7
Syntax
public void SetAnnotation( Object annotation )
Public Sub SetAnnotation ( annotation As Object ) Dim instance As AFValue Dim annotation As Object instance.SetAnnotation(annotation)
public: void SetAnnotation( Object^ annotation )
member SetAnnotation : annotation : Object -> unit
Parameters
- annotation
- Type: SystemObject
The value of the annotation to associate with this AF value. It can be a list of structured AFAnnotations or a single value of type Object. To remove an annotation from an existing value, set the annotation value to an Empty string.
Exceptions
| Exception | Condition |
|---|---|
| ArgumentNullException | The annotation is . |
| NotSupportedException | The data reference does not support the this method, or a data reference has not been configured. |
Remarks
This method will associate the annotation with this AF value; however, the annotation is not committed until the value is updated using UpdateValue(AFValue, AFUpdateOption)
The attribute must indicate that it supports setting annotations by including the Annotations flag in its SupportedDataMethods.
| This method, property, or class is not available in the legacy .NET 3.5 version of the SDK. |
| You must have WriteData security rights to write a data value. |
Examples
// This example demonstrates how to create an attribute for an // element and retrieve and set annotations on values. // Get the Database PISystems myPISystems = new PISystems(); PISystem myPISystem = myPISystems.DefaultPISystem; AFDatabase myDB = myPISystem.Databases.DefaultDatabase; // Create an Element AFElement myElement = myDB.Elements.Add("MyElement"); // Create an Attribute AFAttribute myAttribute = myElement.Attributes.Add("MyAttribute"); myAttribute.DefaultUOM = myPISystem.UOMDatabase.UOMs["kelvin"]; myAttribute.DataReferencePlugIn = AFDataReference.GetPIPointDataReference(myPISystem); myAttribute.ConfigString = @"\\%Server%\sinusoid;ReadOnly=False"; // Create New Simple Annotation AFValue myValue1 = new AFValue(155.432, AFTime.Now); myValue1.SetAnnotation("New Event with Simple Annotation"); myAttribute.Data.UpdateValue(myValue1, AFUpdateOption.InsertNoCompression); // Update an Existing Annotation myValue1.SetAnnotation(100); myAttribute.Data.UpdateValue(myValue1, AFUpdateOption.Replace); // Create an AFFile to be used as an Annotation value string path = System.IO.Path.Combine(System.IO.Path.GetTempPath(), "TestFile.txt"); using (System.IO.File.Create(path)) { } AFFile myFile = new AFFile(); myFile.Upload(path); // Create New Structured Annotation AFAnnotations myAnnotations = new AFAnnotations(); AFValue myValue2 = new AFValue(255.543); AFAnnotation myAnnotation = myAnnotations.Add("Annotation#1", 400.456); myAnnotation.Description = "1st Annotation is a Double."; myAnnotation = myAnnotations.Add("Annotation#2", "My Annotation Value"); myAnnotation.Description = "2nd Annotation is a String."; myAnnotation = myAnnotations.Add("Annotation#3", myFile); myAnnotation.Description = "3rd Annotation is an AFFile."; myValue2.SetAnnotation(myAnnotations); myAttribute.Data.UpdateValue(myValue2, AFUpdateOption.InsertNoCompression); // Read Annotations object theAnnotation = myValue1.GetAnnotation(); DisplayAnnotation(myValue1, theAnnotation); theAnnotation = myValue2.GetAnnotation(); DisplayAnnotation(myValue2, theAnnotation); AFValue myValue = myAttribute.GetValue(); theAnnotation = myValue.GetAnnotation(); DisplayAnnotation(myValue, theAnnotation);
/// <summary> /// Display information about the annotated value. /// </summary> /// <param name="theValue"> /// The AFValue associated with the specified annotation value. /// </param> /// <param name="theAnnotation"> /// The annotation value associated with the specified AFValue. /// </param> static private void DisplayAnnotation(AFValue theValue, object theAnnotation) { AFAnnotations theAnnotations = theAnnotation as AFAnnotations; if (theAnnotations == null) { Console.WriteLine("Simple Annotation for Value '{0}' = '{1}'", theValue, theAnnotation); } else { Console.WriteLine("Structured Annotation for Value '{0}':", theValue); foreach (AFAnnotation item in theAnnotations) { Console.WriteLine(" Value = '{0}', Description = '{1}', Creator = '{2}'", item.Value, item.Description, item.Creator); } } }