在webforms/winforms生成的代码场景之外是否有很好的使用部分类?或者这个功能基本上是支持吗?
它部分用于支持将生成的代码与程序员代码混合的场景(WebForms,WinForms,LINQ-to-SQL等).
有更多理由使用它.例如,如果您在大型,笨拙的文件中有大类,但类具有逻辑相关方法组,则可以选择部分类来使文件大小更易于管理.
代码生成是部分类的驱动力.需要的是拥有一个不断变化的代码生成类,但允许开发人员提供自定义代码作为类的一部分,每次进行更改时都不会覆盖这些代码以强制重新生成类.
以WinForms或Typed-DataSet为例(或任何设计师).每次对设计器进行更改时,它都会将相应的代码序列化为文件.假设您需要提供一些生成器不知道的其他方法.如果将其添加到生成的文件中,则更改将在下次生成时丢失.
我目前正在处理的项目使用所有DAL,BLL和业务实体的代码生成.但是,生成器只能获得75%的信息.其余部分必须手动编码(例如,自定义业务逻辑).我可以假设每个BLL类都有一个SelectAll方法,因此很容易生成.但是我的客户BLL还需要一个SelectAllByLocation方法.我不能把它放在我的生成器中,因为它不是所有BLL类的通用.因此,我将所有类生成为部分类,然后在单独的文件中定义自定义方法.现在,当我的结构发生变化时,或者由于某种原因我需要重新生成BLL时,我的自定义代码将不会被删除.
我使用部分类作为分离我编写的自定义控件的不同子元素的手段.此外,当与实体创建软件一起使用时,它允许LLBLGen等产品创建类的生成版本,以及自定义的用户编辑版本,如果需要重新生成实体,则不会替换它们.
我经常使用partial类为每个嵌套类赋予自己的文件.我已经开发了一些架构,其中大多数实现只需要一个类,因此我们将这些类嵌套在一个类中.通过使用部分类能力并将每个文件拆分为自己的文件,使文件更易于维护是有意义的.
我们还使用它们来分组股票覆盖或隐藏一组股票.像这样的东西.这是一种在库存变化中混合的便捷方式(只需复制文件并将部分类名称更改为目标类 - 当然,只要目标类也是部分的).