GraphNodeId Class
Definition
Important
Some information relates to prerelease product that may be substantially modified before it’s released. Microsoft makes no warranties, express or implied, with respect to the information provided here.
A GraphNodeId is a name/value pair, for example "a=b". The left part of this identifier ("a") is represented by a GraphNodeIdName called the "Name" and the right hand side, "b" is the "Value" part. The value part of a GraphNodeId can be one of the following: * String * Uri * GraphNodeId * GraphNodeIdCollection Since the Value can be a GraphNodeId or GraphNodeIdCollection, we can use parentheses "()" to specify Nesting: e.g. a=(b=c) a=(b=c d=e) (a=b c=d) To construct a nested GraphNodeId list for (a=b c=d), create an GraphNodeIdCollection and assign it to a GraphNodeId:
GraphNodeId.Get(GraphNodeIdName.Nested, new GraphNodeIdCollection(
GraphNodeId.Get(MyGraphNodeIdNames.a, "b")
GraphNodeId.Get(MyGraphNodeIdNames.c, "d"));
You can also create this GraphNodeId using the following simple arithmetic:
GraphNodeId ab = GraphNodeId.Get("(a=b)");
GraphNodeId abcd = ab + "(c=d)"; // Yields (a=b c=d)
The result can be converted to a string using ToString() or implicit string cast operator and will produce "(a=b c=d)".
Since GraphNodeIds are stored singleton in a HashSet, they can be compared using operator ==
public ref class GraphNodeId : IComparable, IComparable<Microsoft::VisualStudio::GraphModel::GraphNodeId ^>, IEquatable<Microsoft::VisualStudio::GraphModel::GraphNodeId ^>, IEquatable<Microsoft::VisualStudio::GraphModel::IGraphNodeIdKey ^>
[System.ComponentModel.TypeConverter(typeof(Microsoft.VisualStudio.GraphModel.GraphNodeIdConverter))]
[System.Serializable]
public class GraphNodeId : IComparable, IComparable<Microsoft.VisualStudio.GraphModel.GraphNodeId>, IEquatable<Microsoft.VisualStudio.GraphModel.GraphNodeId>, IEquatable<Microsoft.VisualStudio.GraphModel.IGraphNodeIdKey>
[<System.ComponentModel.TypeConverter(typeof(Microsoft.VisualStudio.GraphModel.GraphNodeIdConverter))>]
[<System.Serializable>]
type GraphNodeId = class
interface IEquatable<IGraphNodeIdKey>
interface IEquatable<GraphNodeId>
interface IComparable<GraphNodeId>
interface IComparable
Public Class GraphNodeId
Implements IComparable, IComparable(Of GraphNodeId), IEquatable(Of GraphNodeId), IEquatable(Of IGraphNodeIdKey)
- Inheritance
-
GraphNodeId
- Attributes
- Implements
-
IComparable IComparable<GraphNodeId> IEquatable<GraphNodeId> IEquatable<Microsoft.VisualStudio.GraphModel.IGraphNodeIdKey>
Properties
Empty | |
LiteralValue |
Gets a literal value for the GraphNodeId. Uses the Name if the GraphNodeIdName is a Literal otherwise delegates to ToString. |
Name |
The GraphNodeIdName |
Value |
The value of the GraphNodeId - can be one of:
|
Methods
Add(GraphNodeId) |
Adds a GraphNodeId. If this identifier already is an array, the item is added to the array, otherwise a new embedded array is returned. |
AppendToString(StringBuilder) |
Appends the "ToString" of a GraphNodeId to the StringBuilder. This is more efficient than calling ToString, as the GraphNodeId can re-use the StringBuilder; |
CompareTo(GraphNodeId) |
Compares to another GraphNodeId |
CompareTo(Object) |
Compares to another GraphNodeId |
Equals(Object) |
See if this GraphNodeId match either a GraphNodeId or a GraphNodeIdKey. |
GetArray(GraphNodeIdName, GraphNodeId[]) |
Constructs a partial GraphNodeId based on the given array name and identifiers |
GetArray(GraphNodeIdName, Object) |
Get a GraphNodeId based on the name and value. Does a lookup against a Dictionary to minimize the number of GraphNodeIds around. |
GetHashCode() |
Get the HashCode. We return the hashcode given to us during construction. |
GetLiteral(String) |
Gets a literal GraphNodeId parsed from the given identifier string |
GetNested(GraphNodeId[]) |
Get a nested GraphNodeId based on the given identifiers. Does a lookup against a Dictionary to minimize the number of GraphNodeIds around. |
GetNested(GraphNodeIdName, Object) |
Get a GraphNodeId based on the name and value. Does a lookup against a Dictionary to minimize the number of GraphNodeIds around. |
GetNestedIdByName(GraphNodeIdName) |
Gets a value from the first embedded GraphNodeId that matches the name |
GetNestedValueByName<T>(GraphNodeIdName) |
Gets a value from the first embedded GraphNodeId that matches the name |
GetPartial(GraphNodeIdName, Object) |
Gets a partial GraphNodeId based on the name and value. Does a lookup against a Dictionary to minimize the number of GraphNodeIds around. It is generally not right to get a partial GraphNodeId and use it for a node id. Always use a full Nested GraphNodeId; |
GetValue<T>() |
The value of the GraphNodeId - can be one of:
|
IsNullOrEmpty(GraphNodeId) | |
Parse(String, Boolean, Func<Int32,GraphNodeId>) |
Parse a string into a GraphNodeId |
Parse(String, Boolean) |
Parse a string into a GraphNodeId |
Parse(String) |
Parse a string into a GraphNodeId |
RemovedNestedNames(GraphNodeIdName[]) |
Returns a partial GraphNodeId containing the given GraphNodeIdName |
ToString() |
Gets a string for the GraphNodeId |
Operators
Addition(GraphNodeId, GraphNodeId) |
The + operator adds two GraphNodeIds. If either GraphNodeId is already contain an array, the item is added to the array, otherwise a new embedded array is returned. |
Equality(GraphNodeId, GraphNodeId) |
The == operator compares two GraphNodeIds and return whether they're equal |
Inequality(GraphNodeId, GraphNodeId) |
The != operator compares two GraphNodeIds and return whether they're equal |
Explicit Interface Implementations
IEquatable<GraphNodeId>.Equals(GraphNodeId) |
Our implementation of IEquatable<GraphNodeIdKey>.Equals. We use explicit interface implementation in order to keep the IGraphNodeIdKey private. |
IEquatable<IGraphNodeIdKey>.Equals(IGraphNodeIdKey) |
Our implementation of IEquatable<IGraphNodeIdKey>.Equals. We use explicit interface implementation in order to keep the IGraphNodeIdKey private. |