将指定C#代码转为VB.NET后报错,求正确实现方案
问题解决:C#转VB.NET代码的类型转换错误
错误原因
你的VB代码报错是因为直接将单个InvoiceBodyDto对象传递给List(Of InvoiceBodyDto)的构造函数,但该构造函数要求传入可枚举集合(如数组、其他List),而非单个对象。原C#代码中New() {body}是创建了包含单个body元素的数组,对应VB需要用特定语法将单个元素包装为集合。
正确的VB.NET代码
方式1:使用From语法初始化List(推荐)
Dim invoices As New List(Of InvoiceDto) From { New InvoiceDto With { .Body = New List(Of InvoiceBodyDto) From {body}, .Header = header, .Payments = New List(Of PaymentDto) From {payment} } }
方式2:直接使用数组(若属性接受IEnumerable(Of T)类型)
如果InvoiceDto的Body和Payments属性定义为IEnumerable(Of InvoiceBodyDto)/IEnumerable(Of PaymentDto),可以简化为:
Dim invoices As New List(Of InvoiceDto) From { New InvoiceDto With { .Body = {body}, .Header = header, .Payments = {payment} } }
代码说明
From {body}语法会将单个元素包装为可枚举集合,满足List构造函数的参数要求- 外层
From { ... }用于初始化包含单个InvoiceDto对象的List(Of InvoiceDto),和原C#代码的集合初始化逻辑完全一致
内容的提问来源于stack exchange,提问作者Hero4000
相关产品推荐
相关产品推荐

