将ENUM(CustomType)传递给另一个类,其中该ENUM不存在

时间:2017-09-10 20:20:58

标签: c#

//问题更新

让我们说,对于我的新项目,我创建了一个文件,我有:

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是动态的,可以更改(删除一些值),我不想每次都修改我的库。

1 个答案:

答案 0 :(得分:1)

  

MyDates是动态的,可以更改(删除一些值),我不想每次都修改我的库。

使用enum实现这一目标的唯一方法是使消费代码通过反映访问enum Enum.GetNames() / {{1} }),而不是依赖于编译时存在的值。这可以做到,但建议可能Enum.GetValues()不是此数据的最佳选择,尤其是在删除项目时。删除成员本质上是一种可以打破消费者的变化。