using System;
using System.Collections.Generic;
using System.Text;

namespace Apewer.Models
{

    /// <summary>文本字段。</summary>
    [Serializable]
    public sealed class TextField
    {

        /// <summary>名称。</summary>
        public string Name { get; set; }

        /// <summary>值。</summary>
        public string Value { get; set; }

        /// <summary>文本字段。</summary>
        public TextField() { }

        /// <summary>创建文本字段。</summary>
        public TextField(string name, string value)
        {
            this.Name = name;
            this.Value = value;
        }

        /// <summary>创建文本字段。</summary>
        public TextField(KeyValuePair<string, string> pair)
        {
            this.Name = pair.Key;
            this.Value = pair.Value;
        }

        /// <summary></summary>
        public override string ToString() => $"{Name} = {Value}";

        /// <summary></summary>
        public override bool Equals(object obj)
        {
            if (obj != null && obj is TextField field) return field.Name == Name && field.Value == Value;
            return false;
        }

        /// <summary></summary>
        public override int GetHashCode() => (Name ?? "").GetHashCode() ^ (Value ?? "").GetHashCode();

        /// <summary></summary>
        public static implicit operator KeyValuePair<string, string>(TextField field) => field == null ? default : new KeyValuePair<string, string>(field.Name, field.Value);

        /// <summary></summary>
        public static implicit operator TextField(KeyValuePair<string, string> pair) => new KeyValuePair<string, string>(pair.Key, pair.Value);

    }

}