枚举是值类型,值类型无法继承~
都是sealed

解决方案 »

  1.   

    数据表里有这样一张表,那用到的就做外键关联,这表里的数据是可以动态添加删除修改的,你在程序里定死一个enum是没有意义的。一般来说:会变化的数据列表,在db里用表描述,并用外键做关联
    固定的一些值,使用枚举,写在程序中。
      

  2.   

    我的实体类是这样建的:
    (为了调用方便,所以采用了枚举列出所有字段,该实体类将会在业务逻辑层、数据访问层、甚至UI控制层,均被用到)
    Public Class modClient
        Public Const TableName = "表名"    Private _FieldValie(1) As Object
        Private _FieldValieNew(1) As Boolean    Default Public Property FieldValie(ByVal pField As Field) As Object
            Get
                Return _FieldValie(pField)
            End Get
            Set(ByVal value As Object)
                _FieldValie(pField) = value
            End Set
        End Property    Public Shared Property GetFieldSQL(ByVal pField As Field) As String
            Get
                Return _Field(pField)
            End Get
            Set(ByVal value As String)
                _Field(pField) = value
            End Set
        End Property    Public Shadows Enum Field
            字段名1
            字段名2
        End Enum    Private Shared _Field() As String = {"字段1", _
                                            "字段2"}
    End Class
      

  3.   

    补充:比如UI控制层可使用如下代码方便的操作此实体类:
    tbCode.Text = modClient1(modClient.Field.客户编码)
    modClient1(modClient.Field.客户编码)=tbCode.Text
    再来个详细点的列子如下:Dim modVClient1 As modVClient
    Dim clsClient1 As New clsClientDim arrField() As modVClient.Field = {modVClient.Field.字段名1, _
                                               modVClient.Field.字段名2}
    modVClient1 = clsClient1.GetVModle(ClientID, arrField)TextBox1.Text = modVClient1(modVClient.Field.字段名1)
    TextBox2.Text = modVClient1(modVClient.Field.字段名2)
      

  4.   

    我是这么想的:为了更好封装,方便维护,与团队间成员更好分工合作。各层之间尽可能的做到独立。
    所以如上结构,是出于如下理由:
    1、字段设置到枚举,这样程序员就可以和数据库分离。不用再关心数据库结构。
    2、UI控制层操作实体类,是因为,我觉得只有UI层才知道要读取那几个字段,或要保存那几个字段。这些如果封装到业务逻辑层,那业务逻辑层程序员必须了解UI层。
      

  5.   

    通过建立实体类,在属性里关联相关对象。实体类生成DLL文件,在其他层通过反射调用其属性和方法
    或通过泛型实现统一性操作更简单
      

  6.   

    也许我前面的描述让很多朋友看不明白,其实我遇到的问题是这样的:
    比如我有很多这类class:
    Public Class modXXX
        Public Shadows Enum Field
            字段A
            字段B
        End Enum    Private Shared _Field() As String = {"A", _
                                            "B"}    Public Shared Function GetFieldName(ByVal pField As Field) As String
            Return _Field(pField)
        End Function
    End Class这个类中Field和_Field是每个类内容不一样的,不可重用内容,而GetFieldName这种函数(这个类中有很多这类函数)是所有类都是共用的,我希望将这些函数重用。问题是这类函数用到了前面不能重用的枚举或数组。
    如果将这些共用函数放入一个基类,那就必须将枚举和数组也放到基类,然后继承类使用Shadows覆盖基类,但这样会导致外部调用该函数,传入枚举参数时,自动弹出的列表中显示的是基类的枚举,而不是继承类。
    我真是郁闷了,已经试了好多方法了,都不行。期盼高手的指点。。
      

  7.   

    我想你要的是这个? public class DbColumnEntity
        {
            private string _ColumnName;//列名,例如 UserName
            private string _ColumnDescription;//列描述,例如 用户名        public string ColumnName
            {
                get { return _ColumnName; }
                set { _ColumnName = value; }
            }

            public string ColumnDescription
            {
                get { return _ColumnDescription; }
                set { _ColumnDescription = value; }
            }        public DbColumnEntity(string Name,string Desc )
            {
                _ColumnName = Name;
                _ColumnDescription = Desc;
               
            }
        }
        public class BaseClass
        {
            private List<DbColumnEntity> _Columns = new List<DbColumnEntity>();        public List<DbColumnEntity> Columns
            {
                get { return _Columns; }
                set { _Columns = value; }
            }
            public BaseClass()
            {//基类的列
                _Columns.Add(new DbColumnEntity("name1", "desc1"));
                _Columns.Add(new DbColumnEntity("name2", "desc2"));
            }        public DbColumnEntity GetColumn(string ColumnName)
            {
                DbColumnEntity dc1 = _Columns.Find(
                    delegate(DbColumnEntity dc)
                    {
                        return dc.ColumnName == ColumnName;
                    } );
                    
                return dc1;
            }
        }    public class SubClass1 : BaseClass
        {
            public SubClass1()
            {//基类1的特殊列
                Columns.Add(new DbColumnEntity("subclass1name1", "subclass1desc1"));
                Columns.Add(new DbColumnEntity("subclass1name2", "subclass1desc2"));
            }
        }
        public class SubClass2 : BaseClass
        {
            public SubClass2()
            {//子类2的特殊列
                Columns.Add(new DbColumnEntity("subclass2name1", "subclass2desc1"));
                Columns.Add(new DbColumnEntity("subclass2name2", "subclass2desc2"));
            }
        }