代码之家  ›  专栏  ›  技术社区  ›  jcollum

请举例说明部分方法解决的问题

c#
  •  4
  • jcollum  · 技术社区  · 15 年前

    我还没有真正理解部分方法的好处。有谁能举例说明偏方法最适合解决的问题吗?

    4 回复  |  直到 15 年前
        1
  •  6
  •   kbrimington    15 年前

    从本质上讲,分部方法最有用的目的是让代码生成系统提供一个API,以便在不使用继承的情况下扩展其属性和方法的功能。

    请看一下任何linqtosql数据模型,以获得一个快速示例。

    生成的代码包括partial方法,如果在您自己的partial类中实现,这些方法将授予在现有属性中执行验证逻辑、事件通知等的能力。

    partial方法之所以吸引人,是因为如果不在自己的partial类中实现它们,它们就根本不会被发送到编译后的代码中,这提供了一个适度的效率提升。

    下面是一篇不错的博客文章,演示了如何使用分部方法注入验证逻辑:

    http://www.davidhayden.com/blog/dave/archive/2007/07/24/LINQToSQLValidationEnterpriseLibraryValidationApplicationBlock.aspx

        2
  •  10
  •   Community CDub    5 年前

    Partial Class and Methods (C# Programming Guide) 在MSDN上:

    如果没有提供实现,则在编译时删除该方法和对该方法的所有调用。

    分部方法使类的一个部分的实现者能够定义一个方法,类似于事件。 类的另一部分的实现者可以决定是否实现该方法。

    分部方法作为自定义生成代码的一种方法特别有用。 它们允许保留方法名和签名,以便生成的代码可以调用该方法,但开发人员可以决定是否实现该方法。与分部类非常相似,分部方法使代码生成器创建的代码和开发人员创建的代码能够协同工作,而无需运行时开销。

    在我看来,我建议避免使用这些,除非你有一个特殊的,具体的需要。

        3
  •  3
  •   Brad Cunningham    15 年前

        4
  •  2
  •   Larsenal    15 年前

    据我所知,主要的好处之一是能够生成代码“存根”,您可以选择是否实现。因此,您的代码生成器创建一个partial方法并调用一些Validate方法。为了“插入”验证,只需实现partial方法。“partial”关键字允许相对干净的开发过程。