namespace DocumentOperator.Domain.Models.ValueObjects; public sealed class Base64String { public string Value { get; } private Base64String(string value) { Value = value; } public static Base64String Create(string value) { if (string.IsNullOrWhiteSpace(value)) throw new Common.Exceptions.DomainValidationException("Base64 string cannot be empty."); // Validierung: Ist es gültiges Base64? try { Convert.FromBase64String(value); } catch (FormatException) { throw new Common.Exceptions.DomainValidationException("Invalid Base64 format."); } return new Base64String(value); } public static Base64String FromByteArray(byte[] bytes) { if (bytes == null || bytes.Length == 0) throw new Common.Exceptions.DomainValidationException("Byte array cannot be null or empty."); var base64 = Convert.ToBase64String(bytes); return new Base64String(base64); } public byte[] ToByteArray() { return Convert.FromBase64String(Value); } public override string ToString() => Value; // Equality (wichtig für Value Objects!) public override bool Equals(object? obj) { if (obj is not Base64String other) return false; return Value == other.Value; } public override int GetHashCode() { return Value.GetHashCode(); } }