C#版本控制

版本控制(Versioning)主要是为了解决组件的版本不兼容的问题。版本兼容的方式有:

●源代码级兼容:依赖于旧版本的代码在重新编译之后能够与新版本兼容。

●二进制兼容:依赖于旧版本的应用程序无需重新编译就能与新版本兼容。

大多数语言根本不支持二进制级的版本兼容,其中许多在源代码级的兼容问题上也表现的不尽如人意。事实上,许多语言由于自身的缺陷,不改写客户代码就不可能实现组件的升级。

举个例子,假设基类的作者写了一个叫Base的类。在第一个版本中,类Base中没有包含方法F。一个叫Derived的类从Base中继承,并且声明了一个方法F。类Derived和类Base一同被交付客户使用,并且配置到许多客户机和服务器上。

// Author A
namespace A
{
 public class Base //version 1
 {
 }
}
//Author B
namespace B
{
 class Derived:A.Base
 {
   public virtual void F(){
         System.Console.WriteLine("Derived.F");
   }
 }
}

到目前为止,程序的运行一切正常。然后,Base类的作者提供了一个新版本,给类Base添加了一个方法F。

//Author A
namespace A
{
 public class Base //version 2
 {
   public virtual void F(){  //added in version 2
         System.Console.WriteLine("Base.F");
   }
 }
}

新版本的Base应该和旧版本保持源代码级兼容和二进制级兼容。不幸的是,类Base中的新方法与类Derived中的F产生了混淆。Derived应该重载Base中的F吗?看上去不应该,因为Derived已经被编译,那时Base中甚至还没有F!但是,如果Derived中的F不重载Base中的F,而它又必须符合基类Base的声明,可是在写Derived类时还不存在该声明。比如某种情况下,Base中的F可能要求被重载。

在解决版本问题时,C#要求开发人员清楚地表达他们的意图。在原始代码中,类Base不包括方法F,所以不存在什么问题。Derived中的F是作为一个新方法,而不是重载基类中的方法。

//Author A
namespace A
{
 public class Base
 {
 }
}
//Author B
namespace B
{
 class Derived:A.Base
 {
  public virtual void F(){
     System.Console.WriteLine("Derived.F");
  }
 }
}

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索namespace
, 版本控制
, 方法
, 版本
, public
, base
, derived class
, c# f lash
一个
c站、c语言、cf、ch、c罗,以便于您获取更多的相关知识。

时间: 2024-08-31 20:29:40

C#版本控制的相关文章

版本控制入门插图教程

我知道版本控制系统(VCS)很有用. 但是,我平时只是业余写一些小程序,感觉特地装一个VCS太麻烦,所以一直没有用.最近,因为想认真做一个中等规模的项目,所以决心好好学一下怎么用. 下面就是我翻译的一篇入门教程,主要解释了VCS的一些主要概念. ====================== A Visual Guide to Version Control 版本控制入门插图教程 作者:Kalid Azad 译者:阮一峰 原文网址:http://betterexplained.com/articl

Version cue+bridgh(cs3)优化版本控制【碳酸饮料会】

我们在做项目的时候经常遇到需要产出多个版本的情况,以往的版本管理方法很落后,今天给大家介绍个新朋友version cue 什么是version cue Adobe的一个基于服务器的文件管理系统,主要用于协同编辑和版本控制. 借助 Version Cue 您可以集中管理共享的项目文件.使用直观的版本控制系统与他人齐头并进.使用注释跟踪文件状态. 由于我们平时的项目大部分还是独立完成,所以我么先来谈一下适用于个人设计师的私人版本控制功能: Version cue之前的版本控制方法: 1.Ps历史快照

.Net中VSS实现版本控制管理的方法

初始入库 方法一:        第一步:用VS.NET连接到要入到VSS受控中心库的源VSS库,创建一个存放源VSS库中解决方案的一个本地路径,如果项目是一个WEB项目,还会要求创建一个WEB虚拟路径对应的一个本地路径,此路径用来存放WEB项目文件:创建好上面两个目录,就会在VS.NET中看到已经打开的源VSS库中的解决方案,此时进行第一次编译,看看拿过来的VSS源库中的解决方案有没有问题,如果编译成功,进入我们的第二步:        第二步:在VS.NET的"文件"菜单下,依次打

C# 语言规范--1.13 版本控制

规范|控制 版本控制是一个过程,它以兼容的方式对组件进行不断的改进.如果依赖于早期版本的代码重新编译后可以适用于新版本,则组件的新版本与早期版本源代码兼容.相反,如果依赖于早期版本的应用程序不用重新编译即可适用于新版本,则组件的新版本为二进制兼容. 大多数语言根本不支持二进制兼容性,而且许多语言对促进源代码兼容性所做甚少.实际上,某些语言所含的缺陷使得用它开发出来的组件在不断的改进过程中,一般至少会使依赖于该组件的某些客户端代码失效. 例如,请看一个发布名为 Base 的类的基类作者的情况.在第

程序集的版本控制[下]

程序|控制 这里就具体的实现对程序集版本的控制简单地说说两种方法.希望能有一定的参考意义吧. 1.手动编码实现: 在类中添加静态只读的字符串类型的属性CodeVersion表示程序集(即变量所在类)的版本号.例如在2005年1月20日第一次编写了Member类,那么依照本文上半部分(http://blog.csdn.net/crazytomato/archive/2005/01/28/codelibraryversioncontrolshang.aspx)的讨论,该程序集编译后的版本号应为1.0

程序集的版本控制[上]

程序|控制 在开发ASP.NET应用程序时,可以根据所开发应用程序的具体需求和设计,将代码封装成各种处理相应操作的类.并以此来组织和管理已有的代码.由此便形成了很多在ASP.NET应用程序中的程序集(即编译后形成的DLL文件). 在这些程序集中,很多对底层代码的封装,不涉及应用程序的事务逻辑,那么是可以在各种应用程序中反复应用(代码的重用).例如,对各种常用数据库操作的封装,形成专门用于数据库操作的类,那么该类是可以在所有需要数据库的应用程序中使用的.随之而来的便也有一个问题,可能在各种不同的应

Fireworks MX 2004版本控制和文件上传

控制|上传 Studio MX 2004将站点管理功能扩大到了每个软件中,充分考虑到了团队合作对版本控制的要求,同Dreamweaver一样,新版本的Flash和Fireworks都加入了站点文件管理的功能.不过Fireworks MX 2004的站点功能是整合在Dreamweaver MX 2004中的,也就是说二者只能协同工作,单独的Fireworks MX 2004无法进行站点文件的管理.下面我们来简单看看Fireworks MX 2004中的文件版本控制及FTP管理.一.站点的建立 也许

SSRS的报表版本控制

问题 如今商务智能应用广泛,对我们的商业愈加重要. 对新报表和的各种需求不断攀升. 自 SQL Server 2008 R2的 Reporting Services (SSRS) 开始,微软视图为减轻IT团队的工作量,推出了报表工具 Report Builder 3.0.  在此之前建立复杂的报表必须用BIDS (就是 Visual Studio ,2012以后叫SSDT).现在报表都可以用 BIDS或者Report Builder建立. 因为可以使用两个工具创建修改的关系. 报表的版本控制愈加

Subversion版本控制

一.简介: Subversion是一款自由开放的版本控制软件.Subversion可以管理文件.文件夹以及记录它们的修改状况.Subversion常用来帮助我们管理软件开发的源代码或是公司手册文档. Subversion通过将文档导入至版本库中进行管理,版本库类似于文件服务器,但比文件服务器更强大的是它可以记录你每一次对文件或目录的修改状况,并提供还原数据至老版本的功能. 版本控制概念图: Subversion框架图: 从图中可以看出服务端保存着Subversion版本库,客户端通过命令或图形界

TFS的版本控制

在TFS中对于版本控制是在WorkSpace工作区来控制的. 首先我们先整理WorkSpace的一些基本使用方法. CheckIn:迁入挂起的操作 CreateMapping:创建一个本地映射地址 Delete:删除工作区 GetPendingChanges:获取挂起的工作区 Merge:合并工作项 PendAdd:排队文件或一个文件夹添加到版本控制储存库 PendBranch:计划一个文件或文件夹的分支 PendDelete:队列删除文件或文件夹的从版本控制储存库 PendEdit:编辑签出文