【发布时间】:2017-05-09 15:07:48
【问题描述】:
我从 VS 2010 (VB) 一直跳到 VS 2017,这可能是一个错误。我已经报告了错误,这让我的速度变慢了。我最近担心的是访问一个我在 VS 2010 中从未遇到过问题的全局函数类。我已经报告了它并且它正在分类中,但我想确保自 2010 年以来的版本中没有发生任何变化,希望有人能告诉我。
基本上发生的情况是全局类,无论它是如何配置的,都不会被任何其他类识别。在表单类中包含引用会导致 IDE 将其标记为错误。例如 GlobalFunctions.vb 文档中的代码:
Public Class GlobalFunctions
Public Function DecodeBase64(strEncoded As String) As String
Dim byt As Byte() = Convert.FromBase64String(strEncoded)
Return (System.Text.ASCIIEncoding.ASCII.GetString(byt))
End Function
Public Function EncodeBase64(strUnencoded As String) As String
Dim byt As Byte() = System.Text.Encoding.UTF8.GetBytes(strUnencoded)
Return (Convert.ToBase64String(byt))
End Function
End Class
以及来自表单页面的调用方法:
If elemSetting.Attributes("name").Value = "LoginName" Then
Session("MailLoginName") = globalfunctions.DecodeBase64(elemSetting.Attributes("value").Value)
End If
If elemSetting.Attributes("name").Value = "LoginPass" Then
Session("MailLoginPass") = globalfunctions.DecodeBase64(elemSetting.Attributes("value").Value)
End If
这里的错误在 IDE 中被突出显示:
以及错误列表中的错误信息:
也请理解,我已经尝试了尽可能多的声明变体,例如“公共共享函数”,使调用子共享,将全局函数文档定义为类或模块等。没有任何效果。
我还尝试将 GlobalFunctions.vb 类放在项目的根目录和名为 App_Code 的目录中,正如网上一些博客文章中所建议的那样。
由于我在 VS 2010 中没有遇到过这样的问题,我认为这是 2017 年的一个错误,正如我所说,我已经报告了。但我想用比我自己更聪明的头脑来检查一下,看看我是否忽略了一些可能在 2010 年到 2017 年之间发生变化的事情。
如果我做错了什么,有人可以告诉我吗?或者也许向我重申这确实是一个错误?
谢谢!
【问题讨论】:
-
First GlobalFunction 是一个类,而不是该类的实例。因此,要使用类名直接调用这些方法,它们应该被标记为 Shared
-
第二。类 GlobalFunctions 在不同的项目中吗?如果是,您是否检查过是否已进行了适当的参考并且是否有正确的进口?如果不是,页面和类是否使用相同的命名空间(并再次检查 Imports)?
-
@Steve 我认为这只是他没有创建他的类的实例。是的,完全同意共享
-
@Mederic 错误消息很清楚。从页面代码的角度来看,没有名为 GlobalFunctions 的类。这里缺少一些东西
-
@Steve 正如我所提到的,我尝试了几种方法来声明函数和类/模块,包括“共享”、“公共”等。我只是没有在这里全部展示它们,因为它会使消息混乱。
标签: asp.net vb.net visual-studio-2010 global-variables visual-studio-2017