我在 VB.NET 中有一个 Web 应用程序项目,并且正在尝试添加一个扩展方法以在视图中使用。
扩展名.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
查看.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# 项目中这样做没有问题)。
是否有我遗漏的步骤或其他事情需要完成才能使其正常工作?