c# - 枚举还是不枚举?

标签 c# enums abstract

我正在尝试创建一个抽象类,它封装了我希望所有表继承的基本功能。我有几百个表/ View ,并且希望在所有类中的编码方式上强制执行一些统一性。我知道 C# 不允许使用抽象枚举,但是有没有更好的方法来实现我想要实现的目标?

public abstract class basetbl
{
    public abstract enum efields;

    public virtual void doSort(params efields[] sortfields)
    {
        // some generic sort algorithm
    }
}
public class sometbl : basetbl
{
    public override enum efields
    {
        field1 = 0,
        field2 = 1,
        field3 = 2
    }
    public override void doSort(params efields[] sortfields)
    {
        // or some other code if the base algorithm is insufficient
    }
}
public class testenum
{
    ...
    public void dosort()
    {
        sometbl stbl = new sometbl();
        // get some data
        stbl.doSort(stbl.efields.field2, stbl.efields.field1);
        // do some stuff
        stbl.doSort(stbl.efields.field3);
    }
    ...
}

最佳答案

也许泛型可以帮助你。 通过将基类声明为泛型,您可以帮助开发人员考虑声明内部枚举。

public class basetbl<TEnum>
{  
    public virtual void doSort(params TEnum[] sortfields)
    {
        // some generic sort algorithm
    }
}

public class sometbl : basetbl<sometbl.fields>
{
    public enum fields
    {
        field1 = 0,
        field2 = 1,
        field3 = 2
    }
    public override void  doSort(params fields[] sortfields)
    {
        // or some other code if the base algorithm is insufficient
    }
}

public class testenum
{
    ...
    public void dosort()
    {
        sometbl stbl = new sometbl();
        // get some data
        stbl.doSort(sometbl.fields.field2, sometbl.fields.field1);
        // do some stuff
        stbl.doSort(sometbl.fields.field3);
    }
    ...
}

关于c# - 枚举还是不枚举?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6593966/

相关文章:

java枚举到arraylist卡片组

Java 可选参数化接口(interface)

c++ - 防止类被实例化

c# - 最佳实践 : How to expose a read-only ICollection

javascript - 为什么我的值(value)四舍五入(向上或向下)

c# - 在一定时间后没有收到数据时断开套接字

java - 在类中转换枚举

objective-c - 如何将整数与 Objective-C 枚举进行比较

具有实现自己泛型参数的泛型参数的 Java 抽象类

C# iTextsharp 替换多页 PDF 的页面