这是一个建筑师的问题!
有两个条件独立的枚举
enum OpenID
{
Google,
Aol
}
enum OAuth
{
Facebook,
Twitter
}
class Provider
{
public OpenID openid;
public OAuth oauth;
}
将 Providers 集的所有成员分成 OpenID 和 OAuth 对我来说是非常合乎逻辑的。
If (openid==null) // 一种行为,If (oauth==null) // 另一种行为。
将有一组需要排序的 Provider 实例。
有没有什么办法
支持这个部门(openid vs oauth)和
添加功能以任意安排所有 X 成员,例如 { Facebook、Google、Aol、Twitter} 而不实施 3D 枚举?
意思是,如果一个值被添加到任何枚举中,比如说 OAuth: enum OAuth { Facebook, Twitter, Instagram }
无需在代码中的其他位置显式写入此值(Instagram)以实际添加对排序的支持。
我牢记的想法:
- 无论如何都有一个枚举,但添加前缀,即枚举 X { OpenID_Google, OpenID_Aol, OAuth_Facebook, OAuth_Twitter }。
缩小 - 无法使用枚举 A(或 B)特定操作进行操作。现在我有一个 bool 变量来指示类型: bool IsOpenId; 布尔 ISOAuth;
- XML 列表 { Facebook },表示首先包含/处理 Facebook,然后是 OpenID 的成员,然后是 OAuth 的其余部分。
你有什么惊天动地的想法吗?甚至可能有代码示例!