我有一个VB.NET的Web应用程序项目,尝试添加一个扩展方法以供视图使用。
Extensions.vb
Imports System.Runtime.CompilerServices
Namespace MyApp
Public Module Extensions
<Extension()> _
Public Function GetValOrDefault(ByVal dict As Dictionary(Of String, String), ByVal key As String, ByVal defaultVal As String) As String
Dim val As String
If (dict.TryGetValue(key, val)) Then
Return val
End If
Return defaultVal
End Function
End Module
End Namespace
View.cshtml
@Code
Dim msgs As Dictionary(Of String, String) = New Dictionary(Of String, String)
msgs("Foo") = "Bar"
Dim val As String = msgs.GetValOrDefault("Foo", "Bar")
End Code
然而,这并没有起作用,显示以下错误:
'GetValOrDefault' is not a member of 'System.Collections.Generic.Dictionary(Of String, String)'.
这是一个相当简单明了的扩展方法,我不确定为什么它没有被识别。尝试添加一个更简单的扩展,只接受一个字符串并返回一个字符串,但出现了相同的问题,因此似乎这些扩展方法没有被识别。
尝试编译也没有成功。注意,该模块与视图在同一个项目中,但我认为这不应该有任何影响(我在C#项目中做过这个,没有问题)。
是否有一些步骤或其他需要完成的事情才能使其工作?