如何在界面中表示枚举

好的,所以这篇文章的基础和解释标题很简单。 我有一个方法的接口。 用户端的该方法将枚举作为参数。 但是你不能在界面中定义枚举因此我不知道如何定义这个方法然后如果我期待一个类型枚举作为传入参数之一。

那你怎么处理这种情况呢? 你怎么能在你的界面中获得该方法。 你不知道他们需要发送什么Enum但是你肯定知道你想要它是一个enum而不是魔术字符串。

枚举不是引用类型,因此您不能将Object用作传入参数的类型。 所以不知道该怎么做。

 interface MyInterface { void MyMethod(Enum @enum); } 
 public enum MyEnum { Hurr, Durr } public interface MyInterface { void MyMethod(MyEnum value); } 

如果这不是您正在谈论的内容,请发表评论,以便人们了解您的问题。 因为,虽然枚举没有在界面中定义,但这是一个完全正常且可接受的设计。

如果您正在谈论通用接口以及C#不允许您将generics类型限制为枚举这一事实,则此问题的答案包括两种不同的解决方法。

定义枚举就像定义类或定义接口一样。 您可以将它放在一个类文件中,在命名空间内但在类定义之外,但是如果有几个类使用它,你把它放在哪一个,无论你选择哪个,你都会得到“类型名称与文件不匹配”名字“警告。 因此,“正确”的方法是将它放在自己的文件中,就像您要使用类或接口一样:

MyEnum.cs

namespace MyNamespace { internal enum MyEnum { Value1, Value2, Value3, Value4, Value5 }; } 然后命名空间中的任何接口或类都可以访问它。