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, ...
随机推荐
- 动态规划(DP)基础
DP基础 简单dp 背包问题 记忆化搜索 简单dp 数字三角形 给一个数字构成的三角形,求从顶端走到底部的一条路径,使得路径上的和最大(或者最小). 1 2 3 6 5 4 Example_1 7 3 ...
- js 获取据当前时间n天前的时间
<script type="text/javascript"> function getLastDate() { var date = new Date(); ; va ...
- UICollectionView
#import "ViewController.h" @interfaceViewController ()<UICollectionViewDataSource,UICol ...
- MyBatis源码分析(1)——整体依赖关系图
后续补充更新
- Linux下ffmpeg的完整安装
最近在做一个企业项目, 期间需要将用户上传的视频转成flv格式或mp4格式并用flash插件在前端播放, 我决定采用ffmpeg (http://www.ffmpeg.org/ )实现. 当然以前也用 ...
- Pandas-数据选取
Pandas包对数据的常用数据切片功能 目录 [] where 布尔查找 isin query loc iloc ix map与lambda contains DataFrame的索引选取 [] 只能 ...
- NOIP2012同余方程
描述 求关于 x的同余方程 ax ≡ 1(mod b) 的最小正整数解. 输入格式 输入文件 mod.in输入只有一行,包含两个正整数a,b,用一个空格隔开. 输出格式 输出文件 为 modmod ...
- 项目里面的某个资源文件(比如plist、音频等)无法使用
检查:Build Phases -> Copy Bundle Resources
- Test Regular Expressions Online with RegExr免费的正则表达式检验网站
免费的正则表达式检验网站: http://www.regexr.com
- PHP exec/system启动windows应用程序,执行.bat批处理,执行cmd命令
exec 或者 system 都可以调用cmd 的命令 直接上代码: <?php /** 打开windows的计算器 */ exec('start C:WindowsSystem32calc.e ...