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 に答える