C#C#分部类型解析

 
 等待着下元节的来到,过完七夕节,这么些年也终于过完了,也得起来出去赚钱了,过年回家感觉每个人都认为很牛,唯有协调太渣,为了制止年初再出现这么难堪的局面,仍然需要着力干活。争取当上总经理,赢取白富美,走上人生巅峰。(生活需要幻想,也亟需面对现实,努力得到一个升华的心情,比起富有财富要进一步的宝贵。)

  C# 1

   
 对于明天还在聊QQ和看博客的老同志们,我只想借用上图问一句“你们不上班么?…哈哈哈…”。好了,不聊天了,开首咱们前日的主旨。

   
 C#的花色中,大家知晓最多的就是静态类,对于静态类的有些特征在此间就不做牵线了,因为对此一个.NET开发者来说,静态类的局部特点应该是有必然的牵线,并且在类型中行使的也是非常多。现在亟需介绍的是另一体系型,那就是“分部类型”,对于“分部类型”的摸底,很三个人估计也就是明亮而已,接下去就让我们一同来读书一个“分部类型”这一C#的语言特点。

一.C#分部类型和分部方法分析:

   1.分部类型概述:

   
 学习“分部类型”,我们依然先来打听一下怎么叫做“分部类型”。分部类型是指可以在两个源文件中为一个品种编写代码。对于分部类型的接纳情状,使用最多的地点是一对代码是自动生成,而其他一些的代码为手写的项目。“分部类型”是由C#2.0时引入的。在继承链上设有一个不必要的链接,会掀起某些问题或回落封装型。

   
 大家现在对于分部类型的定义有一个大约的刺探,以及对分部类型的施用场景也有一个开始的摸底,接下去我们来看一下怎么着创立分部类型和分部类型的行使办法。

   2.分部类另外创造和应用方法:

     
 假如急需创建分部类型,咱们只需要在关乎的各样文件的序列的宣示部分添加一个上下文关键字partial。对于分部类型,编译器在编译从前就把具有的文书合并在一块儿了。在一个文件中代码可以调用其余一个文书中的代码。有如下代码:

   SegmentType1.cs:

 partial class SegmentType
    {
        private void Add()
        {
            Update();
        }

        private void Delete()
        {
        }
    }

 SegmentType2.cs

  partial class SegmentType
    {
        private void Update()
        {
            Delete();
        }
    }

   
以上是对分部类型做了一个简易的注明和利用,这多少个.CS文件在编译器编译以前就已经合并在一块儿了。对于分部类型不可以在一个文书中编辑成员的一半代码,而把此外一半代码放到此外一个文件中,必须确保每个独立的分子必须完全地位于它所处的文件中。如下代码:

  SegmentType1.cs:

    partial class SegmentType
    {
        private void Add(string fileName)
        {
            FileStream fs = null;
            try
            {
                fs = File.Create(fileName);
            }           
        }
    }

SegmentType2.cs

 partial class SegmentType
    {
        private void Update()
        {
            Add();
            catch (ArgumentException arex)
            {
                throw arex;
            }
            finally
            {
                if (fs != null)
                {
                    fs.Close();
                    fs.Dispose();
                }
            }
        }
    }

   下边演示的做法是无力回天通过编译的。

 
 对于项目的注解还有一些范围,这就是声称必须要相互匹配,任何文件都能指定要兑现的接口和基类型,以及项目参数的羁绊。假使四个公文都设定了基类型,那么它们必须是千篇一律的,并且只要多个文本都设定了花色参数约束,那么约束必须是均等的。有如下代码实例:

  SegmentType1.cs:

    //接口约束:IEquatable<string>;
    //where TFirst:class :和类型参数约束
    partial class SegmentType<TFirst,TSecond>:IEquatable<string> where TFirst:class 
    {
        //实现IEquatable<string>接口方法
        public bool Equals(string other)
        {
            return false;
        }
    }

SegmentType2.cs

    //指定基类:EventArgs
    //指定接口:IDisposable
    partial class SegmentType<TFirst, TSecond> :EventArgs,IDisposable
    {
        //实现方法
        public void Dispose()
        {
        }
    }

  以上的接口和基类约束中,也可以运用如下方法:

 SegmentType1.cs:

    //接口约束:IEquatable<string>;
    //where TFirst:class :和类型参数约束
    partial class SegmentType<TFirst,TSecond>:IEquatable<string> where TFirst:class 
    {
        //实现方法
        public void Dispose()
        {
        }
    }

SegmentType2.cs

    //指定基类:EventArgs
    //指定接口:IDisposable
    partial class SegmentType<TFirst, TSecond> :EventArgs,IDisposable
    {
        //实现IEquatable<string>接口方法
        public bool Equals(string other)
        {
            return false;
        }
    }

 
 对于接口和基类型约束能够进行交流,基于这种特征,可以将指定的接口与贯彻分离,将为不同连串变更相同的署名的点子封装到一个接口中。不可能在宣称类型时指定其落实了该接口。

 
 以上是重要教师了分部类型的创设和应用模式,接下去大家再来了然一下分部方法的相关文化。

 3.分部方法分析:

 
 对于分部方法的相关概念,在前头介绍分部类型时曾经做了介绍,分部方法的创立和利用与分部类型类似。分部方法有一个风味:任何对未兑现的分部方法的调用,都会被编译器移除。

 
分部方法的宣示与虚无方法的注脚类似,只需要动用partial修饰符提供签名而无须任何实现。实现也急需partial修饰符举行修饰。有如下代码:

 SegmentType1.cs:

 partial class SegmentType
    {
        public SegmentType()
        {
            SegmentTypeStart();
            Console.WriteLine("分部方法解析...");
            SegmentTypeEnd();
        }

        partial void SegmentTypeStart();

        partial void SegmentTypeEnd();
    }

SegmentType2.cs

  partial class SegmentType
    {
        partial void SegmentTypeStart()
        {
            Console.WriteLine("分部方法开始...");
        }
    }

 
 在分部方法中,由于方法也许不存在,所以分部方法重临类型必须阐明为void,且不可能获取out参数。分部方法必须是个体的,然而是静态的或许泛型。

二.C#分部类型和分部方法的特性:

 
 上边介绍了分部类型和分部方法的概念、创建和选择方法,在此地重要介绍一下分部方法和分部类型的特性。分部类型紧要连接设计器和其他代码生成器。利用分部类型模型,代码生成器可以具有自由的操作文件,或者一旦它愿意可以每回都重写整个文件。

 
 某些代码生成器仍是可以够挑选不转变任何C#文本,而是等到构建举办的时候再生成。代码生成器的应用相比的宽广,比如Web服务器代理、ORM工具生成配置文件等等。对于在ORM工具的采纳有如下图:

   C# 2

 
 分部类型在其余方面也有相比较多的应用,分部类型可以扶持我们进行重构。(重构的第一步就是将对比大的序列分成较小的类,很多的涉及的情节首先就可以划分为在多少个或四个公文上存放的分部类型。)

C#,   分部类型也足以帮助我们进单元测试。

 
 分部方法能在手动创立的文件中指定某种行为,并在自动生成的文书中行使该作为。

三.C#分部类型实例:

 
 分部类型和分部方法是一个言语特征,在这边给出一个行使了分部类型的花色。https://github.com/fiidau/Phasing-Utility

四.总结:

   
 对于分部类型和分部方法的牵线还有为数不少,在本文中只是做了一个简短的牵线,分布类型的应用也是相比的宽广,可以极大的升官大家的代码质料。希望本文对我们持有襄助。

相关文章