C# 中枚举的替代方法 - 嵌套
Alternative to enum in C# - nested
看到这篇有趣的文章:
Alternative to enum by Ardalis
如何才能在 class.
中嵌套 classes
假设,我们为每个角色设置了不同的状态:作者、编辑。
Author: Seasoned, Elite
Editor: Approved, Occassional
如何访问值:
Role.Author.Seasoned.Value
Role.Editor.Approved.Value
谢谢
我不明白这个问题。如果要嵌套 类,请使用 嵌套 类。从您链接到的文章中的设计开始,您将得到:
public class Role
{
public static class Author
{
public static Role Seasoned {get;} = new Role(0, "Seasoned author");
public static Role Elite {get;} = new Role(1, "Elite author");
}
public static class Editor
{
public static Role Approved {get;} = new Role(2, "Approved editor");
public static Role Occassional {get;} = new Role(3, "Occassional editor");
}
public string Name { get; private set; }
public int Value { get; private set; }
private Role(int val, string name)
{
Value = val;
Name = name;
}
public IEnumerable<Role> List()
{
return new[]{Author.Seasoned,Author.Elite,Editor.Approved,Editor.Occassional};
}
public Role FromString(string roleString)
{
return List().FirstOrDefault(r => String.Equals(r.Name, roleString, StringComparison.OrdinalIgnoreCase));
}
public Role FromValue(int value)
{
return List().FirstOrDefault(r => r.Value == value);
}
}
看到这篇有趣的文章:
Alternative to enum by Ardalis
如何才能在 class.
中嵌套 classes假设,我们为每个角色设置了不同的状态:作者、编辑。
Author: Seasoned, Elite
Editor: Approved, Occassional
如何访问值:
Role.Author.Seasoned.Value
Role.Editor.Approved.Value
谢谢
我不明白这个问题。如果要嵌套 类,请使用 嵌套 类。从您链接到的文章中的设计开始,您将得到:
public class Role
{
public static class Author
{
public static Role Seasoned {get;} = new Role(0, "Seasoned author");
public static Role Elite {get;} = new Role(1, "Elite author");
}
public static class Editor
{
public static Role Approved {get;} = new Role(2, "Approved editor");
public static Role Occassional {get;} = new Role(3, "Occassional editor");
}
public string Name { get; private set; }
public int Value { get; private set; }
private Role(int val, string name)
{
Value = val;
Name = name;
}
public IEnumerable<Role> List()
{
return new[]{Author.Seasoned,Author.Elite,Editor.Approved,Editor.Occassional};
}
public Role FromString(string roleString)
{
return List().FirstOrDefault(r => String.Equals(r.Name, roleString, StringComparison.OrdinalIgnoreCase));
}
public Role FromValue(int value)
{
return List().FirstOrDefault(r => r.Value == value);
}
}