c# - 将此 C# 代码转换为 VB.NET

标签 c# vb.net entity-framework

我尝试翻译以下 C# 代码

public static class ObjectSetExtensions
{
    public static void AddObjects<T>(this ObjectSet<T> objectSet, IEnumerable<T> objects)
    {
         foreach (var item in objects)
         {
             objectSet.AddObject(item);
         }
    }
}

到 VB.NET:

Module ObjectSetExtensions
    <System.Runtime.CompilerServices.Extension()>
    Public Sub AddObjects(Of T)(ByVal objectSet As ObjectSet(Of T), ByVal objects As IEnumerable(Of T))
        For Each item In objects
            objectSet.AddObject(item)
        Next
    End Sub
End Module

但我收到一条错误消息:

Type argument 'T' does not satisfy the 'Class' constraint for type parameter 'TEntity'.

我错过了什么?

最佳答案

出于同样的原因,C# 版本也无法编译。应该是:

public static void AddObjects<T>(this ObjectSet<T> objectSet,
                                 IEnumerable<T> objects)
    where T : class // Note this bit
{
     foreach (var item in objects)
     {
         objectSet.AddObject(item);
     }
}

VB版本是:

<Extension> _
Public Sub AddObjects(Of T As Class)(ByVal objectSet As ObjectSet(Of T), _
                                     ByVal objects As IEnumerable(Of T))
    Dim local As T
    For Each local In objects
        objectSet.AddObject(local)
    Next
End Sub

请注意在 VB 版本中约束是如何成为类型参数声明的一部分的。有关详细信息,请参阅 MSDN .

关于c# - 将此 C# 代码转换为 VB.NET,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7084907/

相关文章:

c# - new Rectangle() c# 的浮点参数而不是 int 参数?

c# - 如何修复 "IDX20804: Unable to retrieve document from: ' [PII 在 C# 中隐藏 ]'"错误

c# - 类之间的锁共享

c# - vb.net mysql 将文本框的值与表列中的单个值进行比较

php - 连接到客户端桌面应用程序的网站

c# - 使用 Entity Framework 4 填充 DropDownList

entity-framework - Linq 到实体和 Xml 字段

c# - 枚举未设置时会发生什么?

用于根据相关数据进行过滤的 iOS Core Data Predicate

wpf - 滚动内部列表框时,WPF 触摸屏应用程序中本应全屏显示的窗口正在移动