如何使用偏类?

时间:2012-12-29 05:14:10

标签: .net oop class c#-4.0 partial

  

可能重复:
  Why use partial classes?

我是部分课程的新手,并且想知道是否有人能够全面了解我为什么要使用它们以及我在这个过程中会获得什么好处。

我需要做的是,我将数据从 Windows窗体保存到多个表格 5 表格。 我想在其他地方重用代码。

我已经创建了一个DAL类,现在我该如何实现这个部分类来保存数据呢?

感谢您提前支持.. :)

我创造了这样的东西:使用起来好吗?

class clsDAL
    {
        public partial class SaveData
        {
            public void SpClient()
            {

            }
        }

        public partial class SaveData
        {
            public void SpCountry()
            {
            }
        }

        public partial class SaveData
        {
            public void SpDuration()
            {
            }
        }

        public partial class SaveData
        {
            public void SpProfile()
            {
            }
        }

        public partial class SaveData
        {
            public void SpWorkload()
            {
            }
        }
    }

3 个答案:

答案 0 :(得分:5)

部分类用于将(大)类拆分为两个或多个通常用单独文件编写的较小类。他们没有必要在单独的文件中。你可以这样做:

public partial class SaveData
{
    public void SpClient()
    {

    }
}

public partial class SaveData
{
    public void SpCountry()
    {

    }
}

在同一个文件中。但这很少有意义。将它分成多个文件会更好。

为什么:

它有时可以帮助您将代码从单个类分类为单独的块,即使它们基本上都构成了同一个类的一部分。在SpClient文件中使用SpClient.cs功能可以帮助您更好地了解该文件中的代码(以及SpCountry中的SpCountry.cs)...

但这很少需要。一个特殊情况是,在WinForms的情况下,VS自动生成设计器代码到designer.csForm类。这意味着您不必在应用程序逻辑所在的最重要的类中看到大量不重要的代码(您最不可能处理的代码)。所以Form类看起来像:

public partial class Form1 : Form

也将出现在designer.cs中。

另一种可能的巧妙用途是:

public partial class SaveData : IEquatable<SaveData>
{
    //implement IEquatabale here 
}

public partial class SaveData : IComparable<SaveData>
{
     //implement IComparable here 
}

您也可以拥有静态类的部分类:

static partial class Extensions //in StringExtension.cs
{

}

static partial class Extensions //in MathExtension.cs
{

}

您只需在其中一个课程上使用static关键字。编译器假定此类型的每个其他部分类都是静态的。换句话说,你可以这样做:

static partial class Extensions //in StringExtension.cs
{

}

partial class Extensions //in MathExtension.cs
{
    //which will be static
}

在你的情况下,我认为没有特别的理由将问题分成不同的部分类。最好把它写在一个班级。而且你必须编写代码来使事情有效..

答案 1 :(得分:1)

所有'partial'关键字都会将您的类代码分散到多个文件中。 它非常适合组织。否则,它就像一个班级。

您可以重复使用课程。假设它不是静态的,您可以将其实例化为不同的对象。如果它是静态的和可访问的,你可以调用它的方法。

答案 2 :(得分:1)

部分类对于跨多个文件拆分同一个类非常有用,它与代码重用无关。您要描述的问题是典型的CRUD操作,您需要将表单字段映射到数据存储中的字段(sql server,xml,document database(no sql)等)。 DAL是一个很好的开始。只需将表单数据保存在DTO(数据传输对象)中,并将其传递给DAL以保留数据。 不要担心部分课程,它们很少有用。如果你的类需要分成多个文件并且无法控制地增长,那就意味着它们做得太多了。尊重SRP(单一责任原则)并保持您的课程重点突出。祝好运!