C#:将一个枚举包含在另一个内(即镜像另一个枚举/复制它......)

时间:2009-12-02 17:30:43

标签: c# enums reference pointers wrapping

这是我的问题:我有一个引用DLL的对象。我希望其他对象引用我的对象,而不必包含对DLL本身的引用。

除了我想要复制的DLL中的枚举之外,这在大多数情况下都没问题。我可以逐行写出枚举,但我想知道是否有更好的方法来做到这一点。

假设DLL有以下枚举:

public enum dllEnum
{
  value1,
  value2,
  value3
}

我可以做以下事情:

public enum myEnum
{
  value1,
  value2,
  value3
}

或更好:

public enum myEnum
{
  value1 = dllEnum.value1,
  value2 = dllEnum.value2,
  value3 = dllEnum.value3
}

但是这些案例中的每一个都让我自己写出了整个枚举。我宁愿只能将整个枚举包装成我自己的枚举,保留原始枚举的索引。

有些事情:

public enum myEnum
{
  Enum.GetValues(dllEnum)
}

2 个答案:

答案 0 :(得分:8)

这里讨论了你所问的问题:

Enum "Inheritance"

答案 1 :(得分:0)

http://social.msdn.microsoft.com/forums/en-US/netfxbcl/thread/ddedaf59-fb36-45cd-8062-446fa92d8f68

本文有一些很好的例子可以帮助您找到一个解决方案,您可以动态生成枚举并在运行时编译它。我已经在VB.Net中为'eval'类型函数做了这个,但我还没有为枚举做过。

这不允许对值进行编译时检查,因此您可能会在很多方面受到伤害。使用.Net 4.0中的DLR,我想你会有更多的灵活性(尽管我承认,我还没有阅读下一版本框架的细节。)