How to merge two cases with arguments in a switch statement

Viewed 147

I would like to merge two cases with arguments in a switch statement in C#.

It is easy to merge cases in case of chars, string and integers:

switch (int)
{
    case 1:
    case 2:
    {
        <do something>
    }
}

and a lot of info can be found about this (e.g. How to merge two case statements in one switch statement) but this doesn't work for more complicated cases with for instance ICommands.

The problem + what I've tried

My code looks as follows:

public override Task<IEnumerable<IEvent>> Handle(ICommand value, CancellationToken cancellationToken)
{
    switch (value)
    {
        case UpdateFeeCommand cmd:
        {
            ApplyCreate(cmd.Fee, cmd.Owner);

            break;
        }
        case CreateFeeCommand cmd:
        {
            <identical implementation>
        }
        (...)
    }
}

and I have tried to merge them like

case UpdateFeeCommand cmd:
case CreateFeeCommand cmd:
{}

case UpdateFeeCommand:
case CreateFeeCommand cmd:
{}

case UpdateFeeCommand, CreateFeeCommand cmd:
{}

et cetera, but this syntax doesn't work. Moreover, I've tried replacing cmd with value, but then value.Fee and value.Owner are not found and need the implicit conversion to cmd.

Is it possible to merge these cases?

0 Answers
Related