我在Visual Studio 2013中的VB.NET中创建了一个扩展方法,但它不会出现在Intellisense中。
Imports System.Security.Claims
Imports System.Runtime.CompilerServices
Imports Connect.Common.Portable
Namespace Authorization
Public Module ClaimsPrincipalExtensions
<Extension()>
Public Function CurrentFirmNumber(ByVal principal As ClaimsPrincipal) As Integer
Dim c As Claim = principal.FindFirst(AuthorizationClaimTypes.LOGGED_IN_FIRM_NUMBER)
If (c IsNot Nothing) Then
Dim firmNumber As Integer = 0
If (Integer.TryParse(c.Value, firmNumber)) Then
Return firmNumber
End If
End If
Return 0
End Function
End Module
End Namespace
我已经尝试了在StackOverflow和其他网站上找到的所有内容来解决这个问题但无济于事,包括提到here的所有内容。
在我的调用代码中,我包含了正确的命名空间,如果我调用此扩展,编译器和运行时非常高兴。也就是说,代码运行正常并正确调用扩展方法。它只是智能感知,并没有向我展示。
但是,如果我尝试使用完整命名空间直接引用该方法,而不是从扩展对象引用该方法,则它会显示在intellisense中。
有什么想法吗?
更新
所以,它变得更加怪异。我有一个同事打开同一个来源,他得到智能感知。
同样,以前适用于我的原始扩展现在具有相同的智能感知问题。但是,如果我开始输入扩展名,那么intellisense一旦成为唯一名称就会看到它。
例如,如果我输入&#34; CurrentPrincipal.Current.C&#34; Intellisense建议&#34;声明&#34;但不是&#34; CurrentFirmNumber&#34;,因为它是该类型的一部分。但是,如果我添加一个&#34; u&#34;然后它建议&#34; CurrentFirmNumber&#34;,这是我的扩展。