Newer
Older
enum / oo3.cs
@Derek Comartin Derek Comartin on 29 Jan 2024 834 bytes Init
using Optional;

namespace OO3;

public class OfferingType
{
    public virtual Option<string> GetDownloadUrl()
    {
        return Option.None<string>();
    }

    public virtual Option<string> GetDefaultDownloadFileName()
    {
        return Option.None<string>();
    }
}

public class DownloadableContent : OfferingType
{
    public override Option<string> GetDownloadUrl()
    {
        return Option.Some("Some value");
    }

    public override Option<string> GetDefaultDownloadFileName()
    {
        return Option.Some("Some value");
    }
}

public sealed record Product(int Id, OfferingType Type);

public sealed class ProductHandler()
{
    public void DoStuff(Product product)
    {
        var fileName = product.Type.GetDefaultDownloadFileName();
        var downloadUrl = product.Type.GetDownloadUrl();
    }
}