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