Расширение перечисления через наследование

Когда встроенных перечислений csharp недостаточно, вы можете сделать jre это по старинке и создать dot-net свои собственные. Например, если csharp вы хотите добавить дополнительное .net-framework свойство, например, поле java описания, вы можете сделать dot-net это следующим образом:

public class Action {
    public string Name {get; private set;}
    public string Description {get; private set;}

    private Action(string name, string description) {
        Name = name;
        Description = description;
    }

    public static Action DoIt = new Action("Do it", "This does things");
    public static Action StopIt = new Action("Stop It", "This stops things");
}

Затем .net вы можете обращаться с ним dot-net как с перечислением следующим dotnet образом:

public void ProcessAction(Action a) {
    Console.WriteLine("Performing action: " + a.Name)
    if (a == Action.DoIt) {
       // ... and so on
    }
}

Хитрость заключается .net в том, чтобы убедиться, что visual-c# конструктор является закрытым jdk (или защищенным, если вы .java хотите наследовать), а ваши .net-framework экземпляры являются статическими.

c#

java

.net

2022-09-22T08:06:59+00:00