//问题更新
让我们说,对于我的新项目,我创建了一个文件,我有:
namespace A{
public enum MyDates{
19a,
19b,
19c,
.....
}
....
public class MyABC : Transaction{
....
string smth = MyFunc(MyDates.19a);
....
}
}
我有我的自定义库文件(让我们说相同或不同的命名空间),我也包含在我的每个项目中,并根据我的需要用新方法填充它。现在,我想在那里添加另一个方法,只有在我需要传递MyDates
类型时才能调用它:
namespace A{
partial class Transaction{
......
public string MyFunc(MyDates smth){
return (smth == MyDates.19a ? 'Hi' : (smth == MyDates.19b ? ( etc... ) ) ) ;
}
......
}
}
但是,命名空间B
将无法编译(因为MyDates
不存在)。如果没有那个ENUM,我永远不会调用那个方法,为什么它仍然需要我再次在其命名空间中定义枚举? MyDates
是动态的,可以更改(删除一些值),我不想每次都修改我的库。
答案 0 :(得分:1)
MyDates是动态的,可以更改(删除一些值),我不想每次都修改我的库。
使用enum
实现这一目标的唯一方法是使消费代码仅通过反映访问enum
Enum.GetNames()
/ {{1} }),而不是依赖于编译时存在的值。这可以做到,但建议可能Enum.GetValues()
不是此数据的最佳选择,尤其是在删除项目时。删除成员本质上是一种可以打破消费者的变化。