访问未在ASP.NET中的App_Code中声明的类

时间:2009-01-03 14:04:31

标签: c# asp.net

我有时会定义Business Logic类来“帮助”我的ASPX代码隐藏类。由于它们协同工作,因此将它们包含在代码隐藏文件中对我来说是最有意义的。但是,我偶尔会喜欢从App_Code中定义的更高级别的类访问Business Logic类,但它们不能在文件外自动访问。

因此,问题是:访问App_Code中定义的类很容易,但如何访问其他地方定义的类?

更新:另一件事,ASPX页面类和App_Code类在同一名称空间中 - 这不是问题。

注意:我已经接受了那些已经回复的人的建议(谢谢你们)并且我正在重构以使类访问更容易。但是,我认为这个问题实际上还没有得到解答(在ASP.NET网站项目的情况下)。我不再需要答案,但是,如果有人能够澄清什么使得课程在App_Code之外时可见,那么它可能会帮助其他人(甚至是我,在路上)。 / p>

5 个答案:

答案 0 :(得分:5)

确保将类放在合理的命名空间中。

在您要访问的文件后面的代码中放置'using'关键字。

或者<%@ import如果您在内联代码中使用它们。

将包含您的类的dll放在/ bin文件夹中。

TBH我更喜欢将单独的库项目保留在同一个解决方案中,并在Web项目中包含项目引用。 VS处理为你构建和放置dll。

答案 1 :(得分:2)

有些时候,当你创建或添加任何文件时,它已被创建为内容文件,而它必须是编译文件。

请按照流程解决此问题。

1)右键单击App_Code文件夹中的类文件。 2)单击属性。 3)将构建操作从“”更改为编译 4)重建你的应用程序。

这肯定会有效

Tushar Tyagi

答案 2 :(得分:1)

我假设您的意思是在codebehind .cs文件中定义一个单独的类?你给他们什么样的访问修饰符?

如上所述,我通常在解决方案中有一个单独的项目(通常在MyApp.Web和MyApp等不同的命名空间中),并从那里引用它。

答案 3 :(得分:0)

您也可以在项目中创建一个标准文件夹来访问类,并将它们移动到那里,但您必须做一些额外的事情才能使项目可以访问:

  • 如果您遇到“App_Code”文件夹的问题,请确保您没有将文件夹命名为任何保留的术语(即称之为“AppCode”,而不是“App_Code”)子弹。
  • 这些类应该都与代码隐藏相同。
  • 如果从其他类调用类,则使用公共方法确保类是公共的。
  • 包括“使用MyClass;”代码隐藏/类文件顶部的语句。
  • 确保将“Build Action”属性设置为Compile。

答案 4 :(得分:-2)

您无法从文件后面的同一代码中的另一个类访问类.net dsnt支持多重继承。但是你可以在主类中创建业务逻辑类作为内部类,并将其所有函数公开,以便可以在主类中调用它们。