public class Supplier
{
    public int ID { get; set; }
    public string Name { get; set; }
    public List<Product> Products { get; set; }
    public Dictionary<string, Address> Addresses { get; set; }
    public DateTime Created { get; set; }
    public SupplierStatus Status { get; set; }
    public Array Contacts { get; set; }
    public object Logo { get; set; }
}

public class Product
{
    private ProductCode _code;
    public int ID { get; set; }
    public string Description { get; set; }
    public float Price { get; set; }
    public Guid InventoryID { get; set; }
    public ProductCode Code { get { return _code; } set { _code = value; } }
    public byte[] ImageData { get; set; }
}
    
public struct ProductCode
{
    public int ProductID;
    public char Category;
}

public class Address
{
    public string AddressLine { get; set; }
    public PostCode PostCode { get; set; }
}

public class PostCode
{
    public string Inner { get; set; }
    public string Outer { get; set; }
}