“继承”的问题

“继承”的问题

我在一个低级别的命名空间中有一个枚举。我想在“继承”低级枚举的中间级别命名空间中提供一个类或枚举。

namespace low{
   public enum base
   {
      x, y, z   }}namespace mid{
   public enum consume : low.base
   {
   }}

我希望这是可能的,或者某种可以取代枚举消费的类,它将为枚举提供抽象层,但仍然允许该类的实例访问枚举。

思想?

编辑:我之所以没有在课堂上切换到Const,原因之一是我必须使用的服务需要低级别的枚举。我得到了WSDL和XSD,它们将结构定义为枚举。服务不能更改。


慕姐8265434
浏览 371回答 3
3回答

慕尼黑5688855

你可以通过上课实现你想要的:public class Base{     public const int A = 1;     public const int B = 2;     public const int C = 3;}public class Consume : Base{     public const int D = 4;     public const int E = 5;}现在,您可以使用这些类,类似于它们是枚举时的情况:int i = Consume.B;更新(在你更新问题后):如果将相同的int值赋值给现有枚举中定义的常量,则可以在枚举和常量之间进行转换,例如:public enum SomeEnum // this is the existing enum (from WSDL){     A = 1,     B = 2,     ...}public class Base{     public const int A = (int)SomeEnum.A;     //...}public class Consume : Base{     public const int D = 4;     public const int E = 5;}// where you have to use the enum, use a cast:SomeEnum e = (SomeEnum)Consume.B;

千万里不及你

简短的回答是否定的。如果你想玩,你可以玩一点:你总是可以这样做:private&nbsp;enum&nbsp;Base{ &nbsp;&nbsp;&nbsp;&nbsp;A, &nbsp;&nbsp;&nbsp;&nbsp;B, &nbsp;&nbsp;&nbsp;&nbsp;C}private&nbsp;enum&nbsp;Consume{ &nbsp;&nbsp;&nbsp;&nbsp;A&nbsp;=&nbsp;Base.A, &nbsp;&nbsp;&nbsp;&nbsp;B&nbsp;=&nbsp;Base.B, &nbsp;&nbsp;&nbsp;&nbsp;C&nbsp;=&nbsp;Base.C, &nbsp;&nbsp;&nbsp;&nbsp;D, &nbsp;&nbsp;&nbsp;&nbsp;E}但是,它并没有那么好,因为Base.A!=ConsumeA不过,你总是可以这样做:public&nbsp;static&nbsp;class&nbsp;Extensions{ &nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;static&nbsp;T&nbsp;As<T>(this&nbsp;Consume&nbsp;c)&nbsp;where&nbsp;T&nbsp;:&nbsp;struct &nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;(T)System.Enum.Parse(typeof(T),&nbsp;c.ToString(),&nbsp;false); &nbsp;&nbsp;&nbsp;&nbsp;}}为了在基地和消费之间杂交.。您也可以将枚举的值转换为INT,并将它们作为INT而不是enum进行比较,但这种情况也很糟糕。扩展方法返回应该键入类型为T。
打开App,查看更多内容
随时随地看视频慕课网APP