0

我想创建一个具有 2 个属性的类,一个名称(作为类型字符串)和一个类型(作为任何类型)。这个想法是我可以创建我的类的集合,这样我就可以传递我的参数集合

Public Class parameter
    Dim m_ParameterName As String
    Dim m_ParameterType As Type

    Public Property ParameterName As String
        Get
            Return m_ParameterName
        End Get
        Set(ByVal value As String)
            m_ParameterName = value
        End Set
    End Property

    Public Property ParameterType() As T
        Get
            Return m_ParameterType
        End Get
        Set(ByVal value As T)
            m_ParameterType = value
        End Set
    End Property
    Sub New()
        m_ParameterType = Nothing
        m_ParameterName = ""
    End Sub
End Class

然后我想创建一个类的实例并定义属性

Dim myParameter As New parameter
myParameter.ParameterName = "Name"
myParameter.ParameterType = String
or 
Dim myParameter As New parameter
myParameter.ParameterName = "Name"
myParameter.ParameterType = integer
or 
Dim myParameter As New parameter
myParameter.ParameterName = "Name"
myParameter.ParameterType = clsCustomClass

这可能吗?

4

4 回答 4

2


You may have to create a generic class to do this


您可以将类定义为

Public Class SampleClass(Of T)
    Private m_sampleProperty As T
    Public Property SampleProperty() As T
        Get
            Return m_sampleProperty
        End Get
        Set
            m_sampleProperty = value
        End Set
    End Property
End Class

用法 :

    Dim strClass As New SampleClass(Of String)()
    strClass.SampleProperty = "wohoo_string"

    Dim int32Class As SampleClass(Of Int32) = New SampleClass(Of Integer)()
    int32Class.SampleProperty = 10
于 2013-01-29T22:35:46.873 回答
1

1) 你不能创建泛型属性,因为编译器永远不会知道使用什么 getter。假设你有

Public Property SomeProperty() As T
    Get
        Console.WriteLine(GetType(T).Name)
        Return Nothing
    End Get
End Property

这会打印Dim a = SomeProperty什么?

2)ParameterType应该有Type类型。

3)您应该使用GetType()运营商http://msdn.microsoft.com/en-US/library/tay4kywk.aspx 例如,parameter.Type = GetType(String)

于 2013-01-30T03:43:08.837 回答
0

我认为您必须为此创建一个通用类。

试试这个。

如何在 VB.NET 中创建通用属性?

于 2013-01-29T21:43:55.220 回答
0
Dim m_ParameterName As String
Dim m_ParameterType 


Public Property ParameterType() 
    Get
        Return m_ParameterType
    End Get
    Set(ByVal value )
        m_ParameterType = value
    End Set
End Property

只需将类型留空 - 这就像 c# 中的“var”

另一种选择是使用As Object

于 2013-01-29T21:49:52.303 回答