private void UpdateTypeDefinition(ILocalNode instance, ExpandedNodeId typeDefinitionId)
{
// check existing type definition.
ExpandedNodeId existingTypeId = instance.TypeDefinitionId;
if (existingTypeId == typeDefinitionId)
{
return;
}
if (!NodeId.IsNull(existingTypeId))
{
if (m_nodes.TypeTree.IsTypeOf(existingTypeId, typeDefinitionId))
{
throw ServiceResultException.Create(
StatusCodes.BadTypeDefinitionInvalid,
"Type definition {0} is not a subtype of the existing type definition {1}.",
existingTypeId,
typeDefinitionId);
}
DeleteReference(instance, ReferenceTypeIds.HasTypeDefinition, false, existingTypeId, false);
}
AddReference(instance, ReferenceTypeIds.HasTypeDefinition, false, typeDefinitionId);
}