using System; using System.Reflection; namespace Unity.VisualScripting { public struct LooseAssemblyName { public readonly string name; public LooseAssemblyName(string name) { if (name == null) { throw new ArgumentNullException(nameof(name)); } this.name = name; } public override bool Equals(object obj) { if (!(obj is LooseAssemblyName)) { return false; } return ((LooseAssemblyName)obj).name == name; } public override int GetHashCode() { return HashUtility.GetHashCode(name); } public static bool operator ==(LooseAssemblyName a, LooseAssemblyName b) { return a.Equals(b); } public static bool operator !=(LooseAssemblyName a, LooseAssemblyName b) { return !(a == b); } public static implicit operator LooseAssemblyName(string name) { return new LooseAssemblyName(name); } public static implicit operator string(LooseAssemblyName name) { return name.name; } public static explicit operator LooseAssemblyName(AssemblyName strongAssemblyName) { return new LooseAssemblyName(strongAssemblyName.Name); } public override string ToString() { return name; } } }