对于Instance,我创建了一个如下定义的子例程:
Private Sub PCboPl(pList As List(Of Object), dt As DataTable)
pList = New List(Of Object)
dt = oDB.GSD()
For Each dr In dt.Rows
pList.Add(New Object(dr))
Next
pList = pList.OrderBy(Function(x) x.dName).ToList()
cboP.ItemsSource = pList
End Sub
以下原因造成太多争论的公共超载次级新()'错误消息
pList.Add(New Object(dr))
我怀疑这是因为我试图将参数传递给不存在的构造函数。
任何帮助将不胜感激。
答案 0 :(得分:0)
如果我说得对,那么你的pList
必须被声明为每个遗留代码的List(Of Object)
,但它实际上是另一种类型的列表(你在评论中提到的“包装”类) ,但在问题上没有任何地方)在构造函数中接收DataRow
作为参数。
如果是这种情况,您只需将wrapper
类的新实例添加到列表中。
pList.Add(New Wrapper(dr))
现在,请小心:
pList = pList.OrderBy(Function(x) x.dName).ToList()
x
是对象,Object
类型没有dName
属性。 Visual Basic允许你做这种......“脏”的东西,但为了清楚起见,你应该至少CType
x
变量为Wrapper
类型。
pList = pList.OrderBy(Function(x) CType(x,Wrapper).dName).ToList()
答案 1 :(得分:0)
我的问题的答案最终在此链接中找到
Create instance of generic type?
我将代码转换为VB.Net
我没有在Sub Routine定义中使用泛型对象,而是使用泛型类型,并且能够实例化泛型类型,同时将参数传递给它的构造函数。