/// <inheritdoc/> protected override void GetObjectData(SerializationInfo info, StreamingContext context) { base.GetObjectData(info, context); var structureValue = Value as Structure; if (typeof(IEntity).IsAssignableFrom(Field.ValueType)) { // serializing entity value as key if (ValueKey != null) { info.AddValue("value", ValueKey.Format()); } else { info.AddValue("value", string.Empty); } } else if (structureValue != null) { // serializing structure value as tuple info.AddValue("value", structureValue.Tuple.ToRegular(), typeof(Tuple)); } else { info.AddValue("value", Value, Field.ValueType); } }