这是我的扩展方法:
Public Module HtmlExtensions
System.Runtime.CompilerServices.Extension
Public Function ReverseMapPath(ByVal html As HtmlHelper, ByVal path As String) As String
Dim appPath = HttpContext.Current.Server.MapPath("~")
Dim res As String = String.Format("{0}", path.Replace(appPath, "/").Replace("\", "/"))
Return res
End Function
End Module
我的web.config有一个我的命名空间的条目
一切都很好。我开始向项目添加更多代码,现在我得到一个错误,看起来我正在加载扩展方法两次,但我无法弄清楚原因。错误是:
path.page.vbhtml(9): error BC30521: Overload resolution failed because no accessible 'FunctionName' is most specific for these arguments:
Extension method 'Public Function FunctionName(path As String) As String' defined in 'namespace.Extensions.HtmlExtensions': Not most specific.
Extension method 'Public Function FunctionName((path As String) As String' defined in 'namespace.Extensions.HtmlExtensions': Not most specific.
我不明白为什么这只是悄悄上升。显然,我改变了一些东西,但撤消一切都没有用。该错误似乎更多地落后于.net框架。有什么想法吗?
答案 0 :(得分:2)
我刚遇到这个问题。如果您阅读CrazyTim评论的链接,问题就来自VS在项目中添加引用给自己。
如果您遇到此问题,VS可能会在您的项目中添加一个引用给自己。删除参考,你下雨了。
答案 1 :(得分:1)
看起来这是名称空间问题。我的扩展类将Global.ProjectName作为命名空间。一旦我改变了一切都有效。由于命名空间,它必须加载两次。