如何在界面中获得C#Enum就像C一样?

时间:2012-11-09 09:28:19

标签: c# interface enums

我习惯于在C中使用枚举,对于如何在C#中处理它们仍然有点困惑。我想在C#中实现一个看起来像

的接口
enum foo {
  one,
  two 
}

interface Ibar {
  enum foo {get;}
}

当获取属性foo时,实现接口Ibar的类将返回foo.one或foo.two。所以,例如

class bar : Ibar {
  enum foo {
    get { return foo.one; }
  }
}

我可以做到

bar b = new bar;
if (b.foo == foo.one) {... }

上面的界面代码要求我在界面内定义枚举(它表示&#39 ;;'应该是',')。

我能找到的最接近的帖子是http://bytes.com/topic/c-sharp/answers/524824-enum-property-interface,但枚举是在班级内定义的。

2 个答案:

答案 0 :(得分:4)

我认为你想要的语法是这样的:

enum Foo
{
    One,
    Two 
}

interface IBar
{
    Foo Foo { get; }
}

结果是一个带有Foo类型Foo的属性的接口。

答案 1 :(得分:1)

您想要的语法是:

enum foo { one, two }

interface Ibar { foo foo { get; } }

class bar : Ibar { foo foo { get { return foo.one; } } }

您只能使用enum 定义新枚举;创建成员变量时,使用您创建的枚举的名称

但是,如果不像枚举类型那样命名成员变量,你会好得多:

enum FooEnum { One, Two }

interface IBar { FooEnum FooValue { get; } }

class Bar : IBar { FooEnum FooValue { get { return FooEnum.one; } } }

(注意我只使用EnumValue来澄清哪个是枚举类型,哪个是值,不要这样做。)

(另外,我认为这更像是通常的C#套管惯例。)