partial class的使用范围
Partial Class,部分类 或者分布类。顾名思义,就是将一个类分成多个部分。比如说:一个类中有3个方法,在VS 2005将该类中3个方法分别存放在3个不同的.cs文件中。 这样做的好处:
1、一个大型的项目类可以同时分成不同的区块交由不同的程序员拽写,同时进行。
2、若由系统自动产生的source,可以用独立的Partial Class加入,而不必更改到原先类。
3、当类(Class)很大时,可以用Partial Class做功能性划分,这也是一种不错的分类方式。
如果您在开发项目的公用函数库,用于公用函数库的内容越丰富越好,但这不可能一下子就写好,需要一点一点的积累,这时就可以使用Partial Class,每隔一段时间将你新开发的Partial Class类的程序上传到服务器上或特定的目录下;而不需要将新的代码复制粘贴到原先的程序代码中,减少不必要的麻烦。
例子:将Example类定义为Partial Class,将该类的三个方法m1、m2、m3分别定义在Example1.cs、Example2.cs、Example3.cs三个类文件中,然后在 PartialClass.aspx.cs中实例化Example类,并调用类中的方法。
//Example1.cs public partial class Example { public string m1() { return "Method 1 "; } } //Example2.cs public partial class Example { public string m2() { return "Method 2 "; } } //Example3.cs public partial class Example { public string m3() { return "Method 3 "; } }
什么情况下使用分部类?
– 处理大型项目时,使一个类分布于多个独立文件中可以让多位程序员同时对该类进行处理(相当于支持并行处理,很实用);
– 使用自动生成的源时,无需重新创建源文件便可将代码添加到类中。Visual Studio 在创建Windows 窗体、Web 窗体时都使用此方法。你不用编辑Visual Studio 所创建的文件,便可创建使用这些类的代码。换句话说:系统会自动创建一个文件(一般记录的是窗体及窗体中的控件的属性),另一个或几个文件记录的是用户自己编写的代码。这两部分分开可以使结构显得非常清晰,用户只需关注自己负责的那部分就行了(需要的话,这两部分可以互相调用)。等到了编辑运行的时候,系统会自动将这两部分合成一个文件。
使用Partial需要注意以下一些情况:
1. 使用partial 关键字表明可在命名空间内定义该类、结构或接口的其他部分
2. 所有部分都必须使用partial 关键字
3. 各个部分必须具有相同的可访问性,如public、private 等
4. 如果将任意部分声明为抽象的,则整个类型都被视为抽象的
5. 如果将任意部分声明为密封的,则整个类型都被视为密封的
6. 如果任意部分声明继承基类时,则整个类型都将继承该类
7. 各个部分可以指定不同的基接口,最终类型将实现所有分部声明所列出的全部接口
8. 在某一分部定义中声明的任何类、结构或接口成员可供所有其他部分使用
9.嵌套类型可以是分部的,即使它们所嵌套于的类型本身并不是分部的也如此。如下所示:
class Container { partial class Nested { void Test1(); } partial class Nested { void Test2(); } }
使用分布类的一些限制:
1. 要作为同一类型的各个部分的所有分部类型定义都必须使用partial 进行修饰。如下所示:
public partial class A { } public class A { } // Error, must also be marked partial
2. partial 修饰符只能出现在紧靠关键字class、struct 或interface前面的位置(枚举或其它类型都不能使用partial);
3. 要成为同一类型的各个部分的所有分部类型定义都必须在同一程序集和同一模块(.exe 或.dll 文件)中进行定义。分部定义不能跨越多个模块;
4. 类名和泛型类型参数在所有的分部类型定义中都必须匹配。泛型类型可以是分部的。每个分部声明都必须以相同的顺序使用相同的参数名。
partial class的使用范围的更多相关文章
- ASP.NET Core 中文文档 第四章 MVC(3.7 )局部视图(partial)
原文:Partial Views 作者:Steve Smith 翻译:张海龙(jiechen).刘怡(AlexLEWIS) 校对:许登洋(Seay).何镇汐.魏美娟(初见) ASP.NET Core ...
- ASP.NET MVC RenderPartial和Partial的区别
背景:ASP.NET MVC 4.0 @{ Html.RenderPartial(...); } public static void RenderPartial(this HtmlHelper ht ...
- Asp.net MVC中Html.Partial, RenderPartial, Action,RenderAction 区别和用法(mvc部分视图的添加)
Partial 和RenderPartial:这两个的性质都是一样, 只指把一个个View给镶入进来, 只是回传值有点不一样Partial 回传的一个Object (MvcHtmlString), 回 ...
- [ASP.NET MVC 小牛之路]12 - Section、Partial View 和 Child Action
概括的讲,View中的内容可以分为静态和动态两部分.静态内容一般是html元素,而动态内容指的是在应用程序运行的时候动态创建的内容.给View添加动态内容的方式可归纳为下面几种: Inline cod ...
- @Html.Partial和@Html.Action区别
1.首先看一下它们的对等关系 @Html.Partial 对应 @{Html.RenderPartial();}@Html.Action 对应 @{Html.RenderAction();} 以上相互 ...
- 分部方法 partial
当有如下这样类似的情况出现的时候,可以有更好的优化方式来处理,那就是分部方法 class PartOld { string name; public virtual void OnChangeName ...
- nancy中视图呈现 Html.Partial(RenderPage的替代品)
在mvc中有RenderPage 用来呈现其他视图的内容,而在nancy中没有RenderPage.怎么办呢? mvc中RenderPage的替代品,就是 Html.Partial. 使用方式 @Ht ...
- MVC中的Html.Partial和Html.RenderPartial
Partial辅助方法用于将部分视图渲染成字符串.注意没必要为视图指定路径和文件扩展名,因为运行时定位部分视图与定位正常视图使用的逻辑相同.例如,下面代码就渲染一个名为AlbumDisplay的部分视 ...
- hdu 5534 (完全背包) Partial Tree
题目:这里 题意: 感觉并不能表达清楚题意,所以 Problem Description In mathematics, and more specifically in graph theory, ...
随机推荐
- php htmlentities函数的问题
看到在细说php第二版教程中的函数htmlentities 例子,实际实验没有效果 $str = "一个 'quote' 是<b>bold</b>";ech ...
- php无刷新上传图片和文件
核心思想:通过Html的iframe标签属性操作顶级窗口,再用php动态无刷新上传图片文件. 示例如下: demo |------uploads #存放上传的文件 |------index.php | ...
- C# 调用WebService的3种方式 :直接调用、根据wsdl生成webservice的.cs文件及生成dll调用、动态调用
1.直接调用 已知webservice路径,则可以直接 添加服务引用--高级--添加web引用 直接输入webservice URL.这个比较常见也很简单 即有完整的webservice文件目录如下图 ...
- Mac 效率工具
我的Mac开发环境 http://blog.csdn.net/feelang/article/details/45071249 iterm2 http://iterm2.com/documentati ...
- 收藏一些好用的fifo
1.Nordic库中的 E:\nRF52_SDK_0.9.2_dbc28c9\components\libraries\fifo app_fifo.c /* Copyright (c) 2013 No ...
- URL Schemes
APP 被唤醒离不开对URL Schemes的认知. 苹果选择沙盒来保障用户的隐私和安全,但沙盒也阻碍了应用间合理的信息共享,于是有了 URL Schemes 这个解决办法. URL Schemes ...
- C语言基础(4)-原码,反码,补码及sizeof关键字
1. 原码 +7的原码是0000 0111 -7的原码是1000 0111 +0的原码是0000 0000 -0的原码是1000 0000 2. 反码 一个数如果值为正,那么反码和原码相同. 一个数如 ...
- C#中Trim()、TrimStart()、TrimEnd()的用法
string s = " from dual union all "; s = s.Trim().TrimEnd("union all".To ...
- UGUI 学习笔记
1.UGUI中是没有depth的概念,那要怎么在脚本中动态的改变一个UI元素在hierarchy中的排序位置呢? 放到最上面 Transform.SetAsFirstSibling最下面Transfo ...
- tyvj1191 迎春舞会之三人组舞
背景 HNSDFZ的同学们为了庆祝春节,准备排练一场舞 描述 n个人选出3*m人,排成m组,每组3人. 站的队形——较矮的2个人站两侧,最高的站中间. 从对称学角度来欣赏, ...