我有一个使用C#的未编译网站。我有6个文件在随机类中共享一堆函数。我想将它们转换为更合理的分离,但我不知道如何在另一个cs文件中引用类。
理想情况下,我将这些文件分成cs文件到一个文件中的shoppingcart类,另一个文件中的例程函数等等。所有6个文件都可以引用任何分离的cs文件。
如果我们不编译它们,这是否可能?
更新
好的,所以我的代码可能看起来像这样,而且ShoppingCart.cart的语法不正确,但它是我希望如何工作的一个例子:
default.aspx.cs:
using ShoppingCart;
public partial class DefaultPage : System.Web.UI.Page
{
protected void page_load()
{
ShoppingCart.cart.CheckCart("newguy");
}
shoppingcart.cs:
namespace ShoppingCart
{
public partial class cart : System.Web.UI.Page
{
public string CheckCart(string cartname)
{
return "test";
}
等
答案 0 :(得分:2)
如果我们不编译它们,这是否可能?
这个问题没有意义。
代码文件通过namespace
和using
指令的组合引用另一个代码文件。
你的例子显示了这一点。但是,它是完全无效的代码(不会编译),因为您没有要引用的cart类的实例。它从未被实例化。
这意味着您需要将CheckCart
方法标记为静态,将购物车类转换为单例,或使DefaultPage从购物车下降。
无论如何,需要编译ShoppingCart命名空间,这意味着您正在谈论的那6个文件需要被分组到一个程序集中,或者作为主项目的一部分,以便运行代码。
如果您只是将代码放入app_code文件夹,那么网站项目会完全在幕后完成。但是,WSP会做一些其他意想不到的事情,如果你和他们一起工作了很长一段时间,你会发现它们完全是垃圾。
因此,在John的评论的基础上,将其转换为Web应用程序项目。对于附加代码,您可以选择创建单独的装配项目并将其放入其中,或者只是将其保留在主项目的子文件夹中。
答案 1 :(得分:1)
将它们保存在同一名称空间中。这将允许您从其他类调用其他类......
你的cs文件做被编译。它只是发生在引擎盖下;)
答案 2 :(得分:1)
如果您需要将业务逻辑与UI分开,一个选项是为业务逻辑创建单独的类库,并从UI层调用这些方法。以下链接将帮助您
Creating a Web Application Project with a Class Library
或者您可以将它们保存在同一个项目中,但要确保所有类都使用相同的命名空间。