如何使用部分类? [复制]

Posted

技术标签:

【中文标题】如何使用部分类? [复制]【英文标题】:How to use partial class? [duplicate] 【发布时间】:2012-12-14 06:32:52 【问题描述】:

可能重复: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()
            
            
        
    

【问题讨论】:

您在这里问了两个问题:为什么要使用部分类以及您的 DAL 设计是否良好。那应该是两个不同的问题。对于第二个问题,几乎没有任何信息可以回答。从表面上看,在单独的部分类中拥有单个函数看起来是一个糟糕的设计。 【参考方案1】:

'partial' 关键字所做的就是将你的类代码分散到多个文件中。 非常适合组织。否则,它就像一个类。

你可以重复使用一个类。假设它不是静态的,您可以将其实例化为不同的对象。如果它是静态且可访问的,则只需调用其方法即可。

【讨论】:

你能给我举个例子吗,我怎样才能用它来反对将数据保存到mysql中的多个表?我也很困惑。【参考方案2】:

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

【讨论】:

【参考方案3】:

部分类用于将一个(大)类拆分为两个或多个较小的类,这些小类通常写在单独的文件中。它们不必位于单独的文件中。你可以这样做:

public partial class SaveData

    public void SpClient()
    

    


public partial class SaveData

    public void SpCountry()
    

    

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

用途:

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

不过,这很少需要。一种特殊情况是 VS 自动为 WinForms 的Form 类生成单独的designer.cs 设计器代码。这意味着您不必在应用程序逻辑所在的最重要的类中看到大量不重要的代码(您很可能不会处理这些代码)。所以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


在您的情况下,我认为没有特殊理由将关注点分成不同的部分类。最好在一节课上写。而且您必须编写代码才能使事情正常进行..

【讨论】:

以上是关于如何使用部分类? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何根据视口宽度使用 Tailwind CSS 更改部分类的布局?

如何在 EntityFramework Core 中使用部分类和部分 OnModelCreating 方法扩展 DbContext

在 gbm 多项式分布中,如何使用预测来获得分类输出? [复制]

如何将 TextView 容器内的文本对齐到顶部? [复制]

贪婪/懒惰(非贪婪)/占有量词如何在内部工作? [复制]

如何避免在外部浏览器手动复制微信号打开微信添加好友?