Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 把大班分成小班_C#_Oop - Fatal编程技术网

C# 把大班分成小班

C# 把大班分成小班,c#,oop,C#,Oop,我在将我的主窗体/类拆分为更小的部分时遇到了问题 主要原因是控制事件。我无法想象如何使类更小,因为它由20个控件(至少)组成,每个控件至少有3个事件 甚至有些方法我实际上也设法转移到一个单独的类中,它们需要将控件作为方法参数发送,以便能够按照最初的预期工作 一个小例子是 public static bool GroupContainsSnippet(TreeView tree, string group, string snippetName) { bool result = false

我在将我的主窗体/类拆分为更小的部分时遇到了问题

主要原因是控制事件。我无法想象如何使类更小,因为它由20个控件(至少)组成,每个控件至少有3个事件

甚至有些方法我实际上也设法转移到一个单独的类中,它们需要将控件作为方法参数发送,以便能够按照最初的预期工作

一个小例子是

public static bool GroupContainsSnippet(TreeView tree, string group, string snippetName)
{
    bool result = false;

    if (tree.Nodes[group] != null)
    {
        result = tree.Nodes[group].Nodes.ContainsKey(snippetName);
    }

    return result;
}
出于某种原因,为了做这种事情而发送控件感觉很奇怪,所以我希望有一种更清晰的方法


提前谢谢。

如果你认为你的班级太大,你有没有考虑过部分班级?您的类的大小不会改变,但它会改变您在任何时候必须处理的一个类文件中的代码量


使用您的示例,我将创建自己的TreeView派生类,例如MyTreeView,并将尽可能多的TreeView代码放入其中。比如说,

public class MyTreeView : TreeView
{
    public bool GroupContainsSnippet(string group, string snippetName)
    {
        return Nodes[group] != null && Nodes[group].Nodes.ContainsKey(snippetName);
    }    
}

这是一种更加o-o的方法,因为它将您特定的TreeView行为封装到自己的类中。

谢谢您的回答。因为我一直在寻找一种更加面向对象的方法,所以这似乎是我应该做的。