Uses different Enum in different inherited class

36 Views Asked by At

I have two classes inherited from a base class, is it possible to use different enum on their respective class?

public abstract class BaseClass
{
    public enum BaseEnum {a,b,c}
    public void Function1(BaseEnum myEnum)
    {
       // Something here
    }
}

public class DerivedClass1 : BaseClass
{
    public enum DerivedEnum {d,e,f}
    public void Function1(DerivedEnum myEnum)
    {
       // Something here
    }
}

public class DerivedClass2 : BaseClass
{
    public enum DerivedEnum2 {g,h,i}
    public void Function1(DerivedEnum2 myEnum)
    {
       // Something here
    }

}

I tried to hide the base enum where Function1 will perform different operations based on MyEnum, I am not sure am I doing this right. Is this a good way to use different enum in inherited class?

public abstract class BaseClass
{
    public enum MyEnum {a,b,c}
    public void Function1(MyEnum myEnum)
    {
       // Something here
    }
}

public class DerivedClass1 : BaseClass
{
    public new enum MyEnum {d,e,f}

}

public class DerivedClass2 : BaseClass
{
    public new enum MyEnum {g,h,i}


}

1

There are 1 best solutions below

0
Eldar On BEST ANSWER

You can use generics like this :

public abstract class BaseClass<TEnum> where TEnum : Enum
{
  public void Function1(TEnum myEnum)
  {
      // Something here
  }
}

public class DerivedClass1 : BaseClass<DerivedEnum>
{
}