【发布时间】:2013-08-23 18:38:19
【问题描述】:
我在 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# 项目中这样做没有问题)。
是否有我遗漏的步骤或其他事情需要完成才能使其正常工作?
【问题讨论】:
标签: vb.net razor extension-methods