Vb.net 用于版本化类的助手函数(或变量或..?)

Vb.net 用于版本化类的助手函数(或变量或..?),vb.net,Vb.net,我正在从事一个项目,其中数据类型很可能会随着时间的推移而改变。例如,当前学生类只有名称和ID,但下周我可能需要为图书馆计算机密码或任何东西添加哈希 我决定采用这样的结构: Public Class Student Public Class V1 Public Name as String Public ID as Int64 End Class End Class Dim a as New Student.Latest 当新事物出现或消失时,我

我正在从事一个项目,其中数据类型很可能会随着时间的推移而改变。例如,当前学生类只有名称和ID,但下周我可能需要为图书馆计算机密码或任何东西添加哈希

我决定采用这样的结构:

Public Class Student
    Public Class V1
        Public Name as String
        Public ID as Int64
    End Class
End Class
Dim a as New Student.Latest
当新事物出现或消失时,我创建了一个新类“V2”,它将实现更改,并且我还将在每个版本之间创建一个转换函数,因此当student对象从数据库(可能是mongodb)加载并且恰好是旧版本时,它会自动转换为新版本

不过,我突然想到,如果我能在学生类中创建一个helper函数来获取最新版本,那么我就可以这样做:

Public Class Student
    Public Class V1
        Public Name as String
        Public ID as Int64
    End Class
End Class
Dim a as New Student.Latest
而不是

Dim a as new Student.V1
这将迫使我在每次有更新时在整个代码中用V2替换V1


我可以通过创建一个名为Latest的类并继承最新版本来实现这一点,但是它会将student版本类存储为Latest,我将失去区分它们的所有能力。在C++中,我可以定义最新的V1,它将创建对象作为类定义,但我不知道VB.NET中的任何这样的功能。有人知道如何做到这一点吗?

我觉得整个概念都很可怕。你为什么要这么做?根据您的描述,您将只添加属性/数据库列。如果您使用的是一个好的ORM(比如实体框架),那么添加这些ORM在很大程度上构成了非破坏性的更改。这听起来很像你在思考问题。你的
#define
的VB等价物将是
Imports Latest=Student.Latest
,但正如其他人所说,这是相当邪恶的。