为什么我不能在不引用包含枚举的程序集的情况下将枚举作为参数传递?

时间:2016-06-09 14:47:48

标签: c#

所以,让我说我在集会A中有这个枚举:

// In assembly A
public enum MyEnum { MyValueA = 1, MyValueB = 2 }

这个方法在组件B上(组件B有组件A作为参考)

// In Assembly B
public void DoSomething(MyEnum value)
{
    // Do Something
}

如果我知道该值并且我编写了引用程序集B的程序集C,那么我有什么理由不这样做?有办法吗?

// In assembly C
DoSomething(1);

我知道这不是一个好习惯。

非常感谢!

编辑:主要是我想知道为什么我不能。我知道有100种方法,但我想知道一种方法而不涉及组件A而不添加任何引用。

2 个答案:

答案 0 :(得分:1)

枚举可以用int表示,我们得到它。实际的选择"枚举的定义虽然是由程序集A定义的,但如果程序集C需要枚举,如果不引用程序集A,它将如何知道什么是有效值?你的枚举不是框架的已知类型,那么如果没有引用,C怎么可能知道呢?

您需要从C中引用程序集A,或者可能创建另一个可能包含枚举的程序集,并由A和C引用。

答案 1 :(得分:0)

您可以将int作为参数而不是Enum。汇编A的枚举传递的值应该是正确的,但是汇编B会编译,因为它不需要知道MyEnum类型