是否有可能将代码分解为多个部分文件?

时间:2012-03-27 11:08:10

标签: c# asp.net class coding-style webforms

我有一个带有.aspx.cs代码隐藏的.aspx Web窗体。代码隐藏近2000行,并且它已经达到了这样的程度:轻松导航它的唯一方法是在各部分之间放置大量空间,缩小以便我可以看到代码的物理外观,以及然后放大我想要编辑的位置。换句话说,这是一个重大的痛苦。我想将这条2000行拆分成代表代码中概念的不同文件。因此,当我需要在页面的“Employee”jquery选项卡中编辑某些功能时,我可以转到仅包含“Employee”功能的partial类。

在New Item菜单中,我找不到任何其他代码隐藏文件,没有.aspx.cs文件。我尝试创建一个.cs文件,将其重命名为.aspx.cs,并给它相同的部分类名---不行,我看不到默认的部分类的任何方法,也没有看到页。

我理解这样一个概念:如果你的“阶级”,在OOP意义上,那么长,它做得太多了。对于Web表单的代码隐藏而言,我不理解的是“类”。表单不能真正分解为更小的形式 - 用户体验需要在一个页面上进行。

4 个答案:

答案 0 :(得分:13)

您可以使用partial classes。因此,将新的.cs文件添加到项目中并使用部分类。

例如假设您当前有以下Default.aspx.cs文件:

public partial class _Default : System.Web.UI.Page
{
    ... some 2000 lines of code
}

您可以将另一个.cs文件添加到项目中:

public partial class _Default
{
    ... a subset of the 2000 lines of code could be moved here
        in order to isolate some functionality
}

非常重要的是,这个部分类在与原始类完全相同的名称空间中声明并具有相同的名称。

但请注意,使用部分类只会隐藏狗屎。它不会清理它。如果要清理它,则必须考虑OOP实践以在不同的类中拆分功能。您应该对应用程序进行分层。

答案 1 :(得分:1)

可以使用部分类将类拆分为单独的文件 - 请参阅

http://msdn.microsoft.com/en-us/library/wa80x488%28v=vs.80%29.aspx

然而,对于你的代码而言,2000行似乎相当大。您是否考虑过将功能提取到针对特定功能而定制的不同帮助程序/策略类中?因此,不是为“Employee”功能创建一个新的分部类,而是创建一个带有可测试助手和逻辑函数的新类,并在原始类中添加对这些类的引用?

答案 2 :(得分:1)

尝试;

Ctrl-M, Ctrl-O

接着是

Ctrl-M, Ctrl-L

答案 3 :(得分:1)

使用或部分类将解决您正在研究的一般问题。您可以通过在代码中使用区域标记来管理代码,这样您就可以打开和关闭代码区域。

示例:

    #region isntances

    public StreamWriter LogFile;
    public FileStream fs;
    string _RunID = Guid.NewGuid().ToString();


    #endregion

这样您就可以标记代码以更好地跟踪它。

希望有所帮助