在运行时替换dll中C#文件中的枚举值

时间:2014-07-14 17:09:37

标签: c# winforms dll enums

我在C#中编写了一个包含5个.cs文件的dll。 ControlsOnForm.cs中定义了公共枚举。

public enum FormControls {
   Button,
   Label,
   DataGrid,
   TextBox
}

现在,我在Windows应用程序中使用此dll,该应用程序显示在附加的Image1中,当我单击Generate按钮时,它会生成ControlsOnForm.cs C#文件,该文件与enum中的相同DLL。

enter image description here

现在我如何在dll中使用枚举值来引用/使用这个动态生成的C#文件。 或者换句话说,dll ControlsOnForm.cs中的枚举值应该替换为新生成的C#文件的枚举值。

谢谢,

2 个答案:

答案 0 :(得分:0)

虽然让代码生成cs文件是微不足道的。我怀疑你想要做的是运行生成的代码。这一步非常困难,在限制方面你需要了解很多东西。

然而,正如另一位用户所评论的那样,听起来你想要改变的是数据,而不是代码。

您应该了解硬件,固件,代码,配置和数据之间的区别。线条比你想象的要模糊得多。但在一天结束时,每一步都是可变性连续性的一步。为了您的目的,代码应该是最不经常变化的东西。在我们的工具链中,这是最难改变的。请记住,在一天结束时,一切都是零和零......您的数据也应该改变您的程序的工作方式。

答案 1 :(得分:0)

枚举是命名常量的集合。在同样的意义上,你不能改变常数,你不能改变一个枚举(至少没有跳过大量的箍)。

您真正想要做的是使用外部数据集,无论是数据表,XML配置文件等。

另外,您可能希望在表单外部创建枚举,但在同一名称空间中。您可以将一个模块添加到项目中,并将所有枚举放在那里。

来自MSDN:

  

enum关键字用于声明枚举,一种不同的类型   它由一组名为常量的命名常量组成   名单。

     

通常最好直接在命名空间中定义枚举   命名空间中的所有类都可以使用相同的方式访问它   方便。但是,枚举也可以嵌套在类或中   结构

参考:MSDN Enum Entry