1
遇到了这个有趣的文章:替代在C#中枚举 - 嵌套
Alternative to enum by Ardalis
我怎样才能使人们有可能在类中已经嵌套类。
假设我们对每个角色都有不同的状态:作者,编辑。
作者:经验丰富,精英
编辑:批准,偶尔
我怎么能访问值:
Role.Author.Seasoned.Value
Role.Editor.Approved.Value
谢谢
遇到了这个有趣的文章:替代在C#中枚举 - 嵌套
Alternative to enum by Ardalis
我怎样才能使人们有可能在类中已经嵌套类。
假设我们对每个角色都有不同的状态:作者,编辑。
作者:经验丰富,精英
编辑:批准,偶尔
我怎么能访问值:
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);
}
}
为什么你不想使用Enum? –
为了编写自定义逻辑并为特定业务案例启用嵌套。 – Satyajit
每个角色都应该包含状态的集合,我没有看到其他方式。 – Dusan