我有一个类设置,如下面的示例我想基于在实例化时传递给类的一些信息来定义变量(var1)。我该怎么做?
config(function($stateProvider) {
$stateProvider.state('search', {
url: '/search?page&loc&seaters&owner&min_price&max_price',
答案 0 :(得分:1)
你没有......在VB中,变量必须具有特定的数据类型。 Data Types in Visual Basic说:
编程元素的数据类型是指它可以容纳哪种数据以及如何存储该数据。数据类型适用于可以存储在计算机内存中或参与表达式求值的所有值。
每个变量[...]都有一个数据类型。
将不同类的对象放入一个变量中:
共同基础
Public Class SomeClass
Inherits BaseClassOrInterface
End Class
Public Class SomeOtherClass
Inherits BaseClassOrInterface
End Class
所以在你的代码中:
Private var1 as BaseClassOrInterface
现在var1可以包含任何(SomeClass,SomeOtherClass,BaseClassOrInterface)。
Public Sub New(which_type as string)
if which_type = "a" then
var1 = new SomeClass()
elseif which_type = "b" then
var1 = new SomeOtherClass()
end if
End Sub
或者你可以将var1声明为System.Object,这是最终的基类(不推荐)。
Private var1 as Object
答案 1 :(得分:0)
只有具有如下所示的基本类型(C#示例)
时才能执行此操作public interface Ibase { }
public class someclass : Ibase {}
public class someotherclass : Ibase {}
然后你可以说
Private var1 as Ibase
Public Sub New(which_type as string)
if which_type = "a" then
' I need var to be a certain type of class
var1 = new SomeClass()
elseif which_type = "b" then
' I need var1 to be a different type of class
var1 = new SomeOtherClass()
end if
答案 2 :(得分:0)
您可以使用Activator.CreateInstance(Type.GetType("ClassA"))
来实例ClassA
课程。请参阅this。
答案 3 :(得分:0)
您可以在类的声明中指定类型限制。
Public Class oneClass(Of t As New)
Private var1 As t
Public Sub New()
var1 = New t
End Sub
End Class
Public Class Someclass
Property Name As String
End Class
然后创建一个实例:
Dim o As New oneClass(Of Someclass)
t As New
限制为具有构造函数的类型,因为在执行 var1 = New t
时需要它。
形成更多控制,您也可以限制为所有类实现的接口。使用 t As {New, IMyInt}
:
Public Class oneClass(Of t As {New, iMyInt})
Private var1 As t
Public Sub New()
var1 = New t
End Sub
End Class
Public Class Someclass
Implements iMyInt
Property Name As String
End Class
Public Interface iMyInt
End Interface