Opc.Ua.ReferenceTypeState.WriteNonValueAttribute C# (CSharp) Method

WriteNonValueAttribute() protected method

Write the value for any non-value attribute.
protected WriteNonValueAttribute ( ISystemContext context, uint attributeId, object value ) : ServiceResult
context ISystemContext
attributeId uint
value object
return ServiceResult
        protected override ServiceResult WriteNonValueAttribute(
            ISystemContext context,
            uint attributeId,
            object value)
        {
            ServiceResult result = null;

            switch (attributeId)
            {
                case Attributes.InverseName:
                {
                    LocalizedText inverseName = value as LocalizedText;

                    if (inverseName == null && value != null)
                    {
                        return StatusCodes.BadTypeMismatch;
                    }

                    if ((WriteMask & AttributeWriteMask.InverseName) == 0)
                    {
                        return StatusCodes.BadNotWritable;
                    }

                    if (OnWriteInverseName != null)
                    {
                        result = OnWriteInverseName(context, this, ref inverseName);
                    }

                    if (ServiceResult.IsGood(result))
                    {
                        InverseName = inverseName;
                    }

                    return result;
                }

                case Attributes.Symmetric:
                {
                    bool? symmetricRef = value as bool?;

                    if (symmetricRef == null)
                    {
                        return StatusCodes.BadTypeMismatch;
                    }

                    if ((WriteMask & AttributeWriteMask.Symmetric) == 0)
                    {
                        return StatusCodes.BadNotWritable;
                    }

                    bool symmetric = symmetricRef.Value;

                    if (OnWriteSymmetric != null)
                    {
                        result = OnWriteSymmetric(context, this, ref symmetric);
                    }

                    if (ServiceResult.IsGood(result))
                    {
                        Symmetric = symmetric;
                    }

                    return result;
                }
            }

            return base.WriteNonValueAttribute(context, attributeId, value);
        }
        #endregion