gpt4 book ai didi

c# - 在 C# 类中使用来自同一个 ASP.NET 网站项目的 VB 类

转载 作者:行者123 更新时间:2023-11-30 16:33:20 25 4
gpt4 key购买 nike

我有一个 ASP.NET 网站项目,我在其中同时使用了 VB.Net 和 C# 类文件。我在 App_Code 目录中为每种语言的类包含了单独的子文件夹。

但是,虽然我可以在 VB 类中成功地使用 C# 类,但我不能做相反的事情:在 C# 类中使用 VB 类。

所以,为了说明,我可能有两个这样的类:

Public Class VBTestClass
Public Sub New()
End Sub

Public Function HelloWorld(ByVal Name As String) As String
Return Name
End Function
End Class

public class CSTestClass
{
public CSTestClass()
{
}
public string HelloWorld(string Name)
{
return Name;
}

}

我可以在我的 VB 类中使用 CS 类,使用“Imports”语句。所以这很有效:

Imports CSTestClass
Public Class VBTestClass
Public Sub New()
End Sub

Public Function HelloWorld(ByVal Name As String) As String
Return Name
End Function

Private Sub test()
Dim CS As New CSTestClass
CS.HelloWorld("MyName")
End Sub
End Class

但是在我的 C# 中通过“using”语句使用 VB 类是行不通的:

using VBTestClass;
public class CSTestClass
{
public CSTestClass()
{
}

public string HelloWorld(string Name)
{
return Name;
}
}

我收到“找不到类型或 namespace “VBTestClass””的错误消息。我在这里错过了什么?

最佳答案

查看使用/导入作为跳过完全限定 namespace 的快捷方式的最佳方法。 vb 和 c# 的行为相同。

考虑示例:

完全合格:

void DoSomething()
{
var p = new Interfaces.CPDATA.DataHolders.Placement();
}

跳过命名空间:

using Interfaces.CPDATA.DataHolders; 
void DoSomething()
{
var p = new Placement();
var t = new Trade();
}

还有一个小技巧

using data = Interfaces.CPDATA.DataHolders; 
void DoSomething()
{
var p = new data.Placement();
var t = new data.Trade();
}

还有一个替换技巧:

using t = Interfaces.CPDATA.DataHolders.Placement; 
void DoSomething()
{
var p = new t(); // happy debagging
}

至于ASP.NET App_Code 文件夹中不同语言的代码文件:请勿使用。对于:

  • 它们在使用 Web 应用程序项目时不起作用
  • 在 Visual Studio 之外的持续集成项目中使用 csc 或 vbc 编译器时,它们不会编译
  • 它们通常会给您带来基础架构方面的很多麻烦。

最好的方法是为各自的语言创建单独的类库项目并使用它们。

最重要的是,在 visual studio 和 iis 下运行此类项目时,会发生很多有趣的事情。如果你很好奇,你可以看看

中的各种文件
\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files\{project name}\{tempname} 

它应该让您很好地了解 asp.net 引擎如何组合 aspx 页面的代码文件。

针对那些无用的信息,我们现在可以知道在同一个命名空间语句“Imports CSTestClass”中拥有一个 CSTestClass 类并不是真正有用。好的编码风格是将它们全部包装在命名空间语句中,例如 MyWebProject.VbCode 和 MyWebProject.CsCode。然后语句“使用 MyWebProject.VbCode”和“导入 MyWebProject.CsCode”对编译器来说更有意义。

关于c# - 在 C# 类中使用来自同一个 ASP.NET 网站项目的 VB 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3319052/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com