Novos Tipos Introduzidos no C# 2.0

Partial Type

Um partial type é um tipo que é permitido ser usado com modificador partial. Aqui estão tres tipos que podem ser usados com o modificador partial: Class, struct e interface. O modificador partial não é permitido em classe delegate.

É usado onde é requerido para dividir um tipo em múltiplos arquivos. A consequencia de um tipo partial é que uma vez compilado, ele não pode ser extendido.

Um tipo partial habilita simultaneamente desenvolvimento de diferentes aspectos de um tipo em diferentes arquivos. Divisão de desenvolvimento é conveniente quando membros da equipe possuem conhecimentos especiais. Por exemplo, um desenvolve a interface do usuário, em um arquivo,

enquanto o outro desenvolve métodos de uma complexa funcionalidade que reside em outro arquivo. Ou desenvolvimento de métodos que possam ser divididos entre desenvolvedores e arquivos.

O tipo é modificado pelo modificador partial, e todas as partes precisam ser declaradas com o modificador partial e residir dentro do mesmo namespace. Um tipo partial pode ser nested.

O exemplo abaixo, ilustra o conceito de tipo partial. Funcionalidades da classe MeuCarro é desenvolvida em diferentes códigos por diferentes desenvolvedores. Os dois arquivos residem no mesmo namespace e quando os arquivos são compilados as funcionalidades são combinadas pelo compilador.

Arquivo1.cs

namespace Modelos

{

// Parte 1

public partial class MeuCarro

{

public LigarMotor()

{;}

}

}

Arquivo2.cs

namespace Modelos

{

// Parte 2

public partial class MeuCarro

{

public DesligarMotor()

{;}

}

}

Generic Type

Os tipos genericos habilitam classes, delegates, interfaces, struturas e métodos serem criados com tipo parametros que são tipos placeholder, que podem ser substituidos quando o tipo é conhecido.

Normalmente usados em estruturas de dados (collections e arrays, ou passando parametros nos métodos).

São especificados com um par de delimitadores ("<" e ">") colocados após o respectivo tipo ou método.

Abaixo, o método MetodoGenerico é declarado como generic.

using System;

using System.Collections.Generic;

using System.Text;

namespace Modelos

{

public class ModelosGenericos

{

public static void MetodoGenerico<M>(M arg)

{

Console.WriteLine("Chamando método genérico Modelos M, " + arg.GetType());

}

public static void Main()

{

// Chama o método genérico passando diferentes tipos

MetodoGenerico<string>("Olá Gernéricos");

MetodoGenerico<double>(16.75);

}

}

}