我习惯于在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,但枚举是在班级内定义的。
答案 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; } } }
(注意我只使用Enum
和Value
来澄清哪个是枚举类型,哪个是值,不要这样做。)
(另外,我认为这更像是通常的C#套管惯例。)