Visão geral de classes parciais no Visual Basic .NET

Classes parciais são um recurso do VB.NET usado em quase todos os lugares, mas não há muito escrito sobre isso. Isso pode ocorrer porque ainda não existem muitos aplicativos óbvios de "desenvolvedor". O principal uso é a maneira como as soluções ASP.NET e VB.NET são criadas no Visual Studio, onde é um desses recursos que normalmente está "oculto".

Uma classe parcial é simplesmente uma definição de classe que é dividida em mais de um arquivo físico. Classes parciais não fazem diferença para o compilador porque todos os arquivos que compõem uma classe são simplesmente mesclados em uma única entidade para o compilador. Como as classes são mescladas e compiladas, você não pode misturar idiomas. Ou seja, você não pode ter uma classe parcial em C # e outra em VB. Também não é possível estender montagens com classes parciais. Todos eles devem estar na mesma assembléia.

Isso é muito usado pelo próprio Visual Studio, especialmente em páginas da Web, onde é um conceito-chave em arquivos "code behind". Vamos ver como isso funciona em um Visual Studio, mas entender o que mudou no Visual Studio 2005 quando foi introduzido é um bom ponto de partida.

instagram viewer

No Visual Studio 2003, o código "oculto" para um aplicativo do Windows estava em uma seção chamada Região marcada como "Código gerado pelo Windows Form Designer". Mas ainda estava tudo lá no mesmo arquivo e era fácil visualizar e alterar o código na Região. Todos do código está disponível para o seu aplicativo no .NET. Mas como parte disso é um código que você deve nunca mexa com, foi mantido nessa região oculta. (As regiões ainda podem ser usadas para seu próprio código, mas o Visual Studio não as usa mais.)

No Visual Studio 2005 (Framework 2.0), a Microsoft fez aproximadamente a mesma coisa, mas ocultou o código em um local diferente: uma classe parcial em um arquivo separado. Você pode ver isso na parte inferior da ilustração abaixo:


Clique aqui para exibir a ilustração
Clique no botão Voltar no seu navegador para retornar

Uma das diferenças de sintaxe entre o Visual Basic e o C # agora é que o C # exige que todos classes parciais sejam qualificadas com a palavra-chave Parcial mas o VB não. Seu formulário principal no VB.NET não possui qualificadores especiais. Mas a instrução de classe padrão para um aplicativo Windows vazio se parece com isso usando C #:

classe parcial pública Form1: Form

As opções de design da Microsoft em coisas como essa são interessantes. Quando Paul Vick, designer de VB da Microsoft, escreveu sobre essa escolha de design em seu blog Panopticon Central, o debate sobre o assunto nos comentários continuou por páginas e páginas.

Vamos ver como tudo isso funciona com código real na próxima página.

Na página anterior, foi explicado o conceito de classes parciais. Convertemos uma única classe em duas classes parciais nesta página.

Aqui está um exemplo de classe com um método e uma propriedade em um projeto VB.NET

 Classe pública CombinedClass. Privado m_Property1 As String. Public Sub - Novo (Valor ByVal como String) m_Property1 = Valor. End Sub. Método público Sub1 () MessageBox. Mostrar (m_Property1) End Sub. Propriedade Property1 () As String. Obter. Retornar m_Property1. End Get. Defina (valor ByVal como sequência) m_Property1 = value. Finalizar conjunto. Propriedade final. Classe final 

Essa classe pode ser chamada (por exemplo, no código de evento Click para um objeto Button) com o código:

Dim ClassInstance As New _. CombinedClass ("Sobre classes parciais do Visual Basic") ClassInstance. Método 1()

Podemos separar as propriedades e métodos da classe em diferentes arquivos físicos, adicionando dois novos arquivos de classe ao projeto. Nomeie o primeiro arquivo físico Partial.methods.vb e nomeie o segundo Partial.properties.vb. Os nomes dos arquivos físicos precisam ser diferentes, mas os nomes parciais das classes serão os mesmos para que o Visual Basic possa mesclá-los quando o código for compilado.

Não é um requisito de sintaxe, mas a maioria dos programadores segue o exemplo no Visual Studio de usar nomes "pontilhados" para essas classes. Por exemplo, o Visual Studio usa o nome padrão Form1.Designer.vb para a classe parcial de um formulário do Windows. Lembre-se de adicionar a palavra-chave Parcial para cada classe e altere o nome da classe interna (não o nome do arquivo) para o mesmo nome. Eu usei o nome da classe interna: PartialClass.

A ilustração abaixo mostra todo o código do exemplo e o código em ação.


Clique aqui para exibir a ilustração
Clique no botão Voltar no seu navegador para retornar

O Visual Studio "oculta" classes parciais, como Form1.Designer.vb. Na próxima página, aprendemos como fazer isso com as classes parciais que acabamos de criar.

As páginas anteriores explicam o conceito de classes parciais e mostram como codificá-las. Mas a Microsoft usa mais um truque com as classes parciais geradas pelo Visual Studio. Um dos motivos para usá-los é separar a lógica do aplicativo do código da interface do usuário (interface do usuário). Em um projeto grande, esses dois tipos de código podem até ser criados por equipes diferentes. Se eles estiverem em arquivos diferentes, eles podem ser criados e atualizados com muito mais flexibilidade. Mas a Microsoft dá mais um passo e oculta o código parcial no Solution Explorer. Suponha que desejássemos ocultar os métodos e propriedades de classes parciais neste projeto? Existe uma maneira, mas não é óbvio e a Microsoft não diz como.

Um dos motivos pelos quais você não vê o uso de classes parciais recomendado pela Microsoft é que ele ainda não é muito bem suportado no Visual Studio. Para ocultar as classes Partial.methods.vb e Partial.properties.vb que acabamos de criar, por exemplo, requer uma alteração no vbproj Arquivo. Este é um arquivo XML que nem é exibido no Gerenciador de Soluções. Você pode encontrá-lo no Windows Explorer junto com seus outros arquivos. Um arquivo vbproj é mostrado na ilustração abaixo.


Clique aqui para exibir a ilustração
Clique no botão Voltar no seu navegador para retornar

A maneira como faremos isso é adicionar uma classe "raiz" que está completamente vazia (apenas o cabeçalho da classe e a instrução End Class são deixados) e tornar as duas classes parciais dependentes dela. Então adicione outra classe chamada PartialClassRoot.vb e altere novamente o nome interno para PartialClass para corresponder aos dois primeiros. Desta vez, eu tenho não usou a palavra-chave Partial apenas para corresponder à maneira como o Visual Studio faz.

Aqui é onde um pouco de conhecimento sobre XML será muito útil. Como esse arquivo precisará ser atualizado manualmente, é necessário obter a sintaxe XML correta. Você pode editar o arquivo em qualquer editor de texto ASCII - o Bloco de Notas funciona muito bem - ou em um editor XML. Acontece que você é excelente no Visual Studio e é isso que é mostrado na ilustração abaixo. Mas você não pode editar o arquivo vbproj ao mesmo tempo em que está editando o projeto em que está. Portanto, feche o projeto e abra apenas o arquivo vbproj. Você deve ver o arquivo exibido na janela de edição, como mostra a ilustração abaixo.

(Note o Compilar elementos para cada classe. Dependente de subelementos devem ser adicionados exatamente como mostrado na ilustração abaixo. Esta ilustração foi criada no VB 2005, mas também foi testada no VB 2008.)


Clique aqui para exibir a ilustração
Clique no botão Voltar no seu navegador para retornar

Para muitos de nós, provavelmente é suficiente saber que existem classes parciais, apenas para sabermos o que são quando tentarmos localizar um bug no futuro. Para o desenvolvimento de sistemas grandes e complexos, eles podem ser um pequeno milagre, porque podem ajudar a organizar o código de maneiras que antes eram impossíveis. (Você também pode ter estruturas parciais e interfaces parciais!) Mas algumas pessoas concluíram que a Microsoft as inventou apenas por razões internas - para fazer sua geração de código funcionar melhor. O autor Paul Kimmel chegou ao ponto de sugerir que a Microsoft realmente criou classes parciais para reduzir seus custos, facilitando a terceirização do trabalho de desenvolvimento em todo o mundo.

Talvez. É o tipo de coisa que eles podem fazer.

instagram story viewer