Я рекомендую использовать метод расширения непосредственно под вашим перечислением Choice
следующим образом:
public enum Choice
{
Rock,
Paper,
Scissors
}
public static class ChoiceExt
{
public static Choice GetAdvantageByChoice(this Choice choice)
{
switch (choice)
{
case Choice.Rock:
return Choice.Scissors;
case Choice.Paper:
return Choice.Rock;
case Choice.Scissors:
return Choice.Paper;
default:
throw new ArgumentException()
}
}
}
In GetAdvantageByChoice
, который является методом расширения, типом Первым параметром будет расширенный тип, поэтому перед ним нужно добавить модификатор this
.
Кроме того, как сказал Йерун Мостерт, вы можете написать switch
более кратко:
public static Choice GetAdvantageByChoice(this Choice choice) =>
choice switch
{
Choice.Paper => Choice.Rock,
Choice.Rock => Choice.Scissors,
Choice.Scissors => Choice.Paper,
_ => throw new ArgumentException()
};