如何在类EntitySet(TEntity)上应用<extension()>属性?</extension()>

时间:2011-09-03 19:19:07

标签: vb.net linq

IDE在以下代码中显示错误

<Extension()> _
Public Function FindByCode(Of TEntity)(ByRef vTEntities As EntitySet(Of TEntity), ByVal vCode As String) As TEntity
    Return (From oTEntity In vTEntities _
                            Where oTEntity.Code.Value = vCode _
                            Select oTentity).FirstOrDefault()
End Function

错误是:

1.Type参数'TEntity'不满足类型参数'TEntity'的'Class'约束。

2.'Code'不是'TEntity'的成员。

请帮我解决这个问题。

1 个答案:

答案 0 :(得分:1)

我怀疑一个问题是参数声明的ByRef部分 - 扩展方法要求第一个参数是ByVal。你不是使用这个事实ByRef无论如何......

另一个问题是这是通用的 - 但你假设有一个名为Code的属性,而这个属性又有一个名为Value的属性 - 那些假设即将到来从?您可能希望约束TEntity类型参数,或者可能首先禁止它是通用的。

编辑:您需要向TEntity添加约束以强制它成为引用类型:

FindByCode(TEntity As Class)

...但这不会有助于它不知道Code属性是什么。