public static NodeId CreateIdForComponent(NodeState component, ushort namespaceIndex)
{
if (component == null)
{
return null;
}
// components must be instances with a parent.
BaseInstanceState instance = component as BaseInstanceState;
if (instance == null || instance.Parent == null)
{
return component.NodeId;
}
// parent must have a string identifier.
string parentId = instance.Parent.NodeId.Identifier as string;
if (parentId == null)
{
return null;
}
StringBuilder buffer = new StringBuilder();
buffer.Append(parentId);
// check if the parent is another component.
int index = parentId.IndexOf('?');
if (index < 0)
{
buffer.Append('?');
}
else
{
buffer.Append('/');
}
buffer.Append(component.SymbolicName);
// return the node identifier.
return new NodeId(buffer.ToString(), namespaceIndex);
}
#endregion