Visual Basic .NET'te kısmi sınıflara genel bakış

Kısmi Sınıflar, VB.NET'in neredeyse her yerde kullanılan bir özelliğidir, ancak bunun hakkında çok fazla şey yazılmamıştır. Bunun nedeni, henüz çok fazla belirgin "geliştirici" uygulaması olmaması olabilir. Birincil kullanım, ASP.NET ve VB.NET çözümlerinin Visual Studio'da oluşturulduğu ve normalde "gizli" olan özelliklerden biridir.

Kısmi bir sınıf, birden fazla fiziksel dosyaya bölünmüş bir sınıf tanımıdır. Bir sınıfı oluşturan tüm dosyalar derleyici için tek bir varlıkta birleştirildiğinden, kısmi sınıflar derleyicide bir fark yaratmaz. Sınıflar bir araya getirilip derlendiğinden, dilleri karıştıramazsınız. Yani, C # 'da bir kısmi sınıf ve VB'de başka bir kısmi sınıf olamaz. Kısmi sınıflarla derlemeleri de genişletemezsiniz. Hepsinin aynı mecliste olması gerekiyor.

Bu, Visual Studio'nun kendisi tarafından, özellikle "arkadaki kod" dosyalarında önemli bir kavram olduğu web sayfalarında çok kullanılır. Bunun bir Visual Studio'da nasıl çalıştığını göreceğiz, ancak tanıtıldığında Visual Studio 2005'te nelerin değiştiğini anlamak iyi bir başlangıç ​​noktasıdır.

instagram viewer

Visual Studio 2003'te, bir Windows uygulaması için "gizli" kodun tümü "Windows Form Designer tarafından oluşturulan kod" olarak işaretlenmiş Bölge adı verilen bir bölümdeydi. Ama yine de hepsi aynı dosyadaydı ve Bölge'deki kodu görüntülemek ve değiştirmek kolaydı. Herşey kodu uygulamanız .NET için kullanılabilir. Ama bazıları kod olması gerektiği için asla karışıklık, o gizli bölgede tutuldu. (Bölgeler yine de kendi kodunuz için kullanılabilir, ancak Visual Studio artık bunları kullanmamaktadır.)

Visual Studio 2005'te (Framework 2.0), Microsoft yaklaşık olarak aynı şeyi yaptı, ancak kodu farklı bir yerde sakladılar: ayrı bir dosyada kısmi bir sınıf. Bunu aşağıdaki şeklin altında görebilirsiniz:


Resmi görüntülemek için Buraya tıklayın
Geri dönmek için tarayıcınızdaki Geri düğmesini tıklayın

Şu anda Visual Basic ve C # arasındaki sözdizimi farklılıklarından biri C # herşey kısmi sınıflar anahtar kelime ile nitelendirilebilir Kısmi ama VB yapmaz. VB.NET'teki ana formunuzun özel niteleyicileri yoktur. Ancak boş bir Windows uygulaması için varsayılan sınıf ifadesi C # kullanarak şöyle görünür:

genel kısmi sınıf Form1: Form

Microsoft'un bunun gibi tasarım tercihleri ​​ilginçtir. Microsoft'un VB tasarımcısı Paul Vick, blogunda bu tasarım seçimi hakkında yazdığında Panopticon Central, yorumlardaki tartışmalar sayfalar ve sayfalar için devam etti.

Tüm bunların gerçek kodla nasıl çalıştığını bir sonraki sayfada görelim.

Önceki sayfada kısmi sınıf kavramı açıklanmıştır. Tek bir sınıfı bu sayfada iki kısmi sınıfa dönüştürüyoruz.

İşte bir VB.NET projesinde bir yöntem ve bir özelliğe sahip bir örnek sınıf

 Genel Sınıf CombinedClass. Özel m_Property1 As String. Genel Alt Yeni (Dize Olarak ByVal Değeri) m_Property1 = Değer. End Sub. Genel Alt Yöntem1 () MessageBox. Show (m_Property1) End Sub. Özellik Property1 () Dize Olarak. Almak. M_Property1 değerini döndürün. Son Alın. (ByVal değeri As String) m_Property1 = değer. Bitiş Kümesi. Son Özellik. Bitiş Sınıfı 

Bu sınıf şu kodla çağrılabilir (örneğin, bir Button nesnesinin Click olay kodunda):

DimI ClassInstance As New _. CombinedClass ("Visual Basic Kısmi Sınıfları Hakkında") ClassInstance. Yöntem 1()

Projeye iki yeni sınıf dosyası ekleyerek sınıfın özelliklerini ve yöntemlerini farklı fiziksel dosyalara ayırabiliriz. İlk fiziksel dosyayı adlandırın Partial.methods.vb ve ikincisine isim verin Partial.properties.vb. Fiziksel dosya adlarının farklı olması gerekir, ancak Visual Basic kod derlendiğinde bunları birleştirmek böylece kısmi sınıf adları aynı olacaktır.

Bir sözdizimi gereksinimi değildir, ancak çoğu programcı Visual Studio'daki bu sınıflar için "noktalı" adları kullanma örneğini izler. Örneğin, Visual Studio varsayılan adı kullanır Form1.designer.vb Windows formunun kısmi sınıfı için. Her sınıf için Kısmi anahtar kelime eklemeyi ve dahili sınıf adını (dosya adını değil) aynı adla değiştirmeyi unutmayın. İç sınıf adını kullandım: PartialClass.

Aşağıdaki şekilde örnek için tüm kod ve geçerli kod gösterilmektedir.


Resmi görüntülemek için Buraya tıklayın
Geri dönmek için tarayıcınızdaki Geri düğmesini tıklayın

Visual Studio Form1.Designer.vb gibi kısmi sınıfları "gizler". Bir sonraki sayfada, yeni oluşturduğumuz kısmi sınıflarla bunu nasıl yapacağımızı öğreneceğiz.

Önceki sayfalarda kısmi sınıflar kavramı açıklanmakta ve bunların nasıl kodlanacağı gösterilmektedir. Ancak Microsoft, Visual Studio tarafından oluşturulan kısmi sınıflarla bir numara daha kullanır. Bunları kullanmanın nedenlerinden biri, uygulama mantığını UI (kullanıcı arayüzü) kodundan ayırmaktır. Büyük bir projede, bu iki tür kod farklı ekipler tarafından bile oluşturulabilir. Farklı dosyalardalarsa, daha fazla esneklikle oluşturulabilir ve güncellenebilirler. Ancak Microsoft bir adım daha gider ve Çözüm Gezgini'nde de kısmi kodu gizler. Bu projede kısmi sınıfların yöntemlerini ve özelliklerini gizlemek istediğimizi varsayalım? Bir yol var, ama belli değil ve Microsoft size nasıl olduğunu söylemiyor.

Microsoft tarafından önerilen kısmi sınıfların kullanımını görmemenizin nedenlerinden biri, Visual Studio'da henüz çok iyi desteklenmemesidir. Örneğin az önce oluşturduğumuz Partial.methods.vb ve Partial.properties.vb sınıflarını gizlemek için vbproj dosya. Bu bir XML dosyası gösterilmiyor bile Solution Explorer'da. Diğer dosyalarınızla birlikte Windows Gezgini ile bulabilirsiniz. Bir vbproj dosyası aşağıdaki çizimde gösterilmiştir.


Resmi görüntülemek için Buraya tıklayın
Geri dönmek için tarayıcınızdaki Geri düğmesini tıklayın

Bunu yapmamızın yolu tamamen boş olan bir "root" sınıfı eklemektir (sadece Class üstbilgisi ve End Class deyimi kalmıştır) ve her iki kısmi sınıfımızı da ona bağımlı hale getirmektir. Bu yüzden adlı başka bir sınıf ekleyin PartialClassRoot.vb ve ilk ismi eşleştirmek için dahili adı PartialClass olarak değiştirin. Bu sefer, değil Kısmi anahtar kelimeyi yalnızca Visual Studio'nun yaptığı gibi eşleştirmek için kullandı.

İşte biraz XML bilgisi çok kullanışlı olacak. Bu dosyanın manuel olarak güncellenmesi gerekeceğinden, XML sözdizimini doğru yapmanız gerekir. Dosyayı herhangi bir ASCII metin düzenleyicide düzenleyebilirsiniz - Not Defteri gayet iyi çalışır - veya bir XML düzenleyicide. Görünüşe göre Visual Studio'da harika bir tane var ve aşağıdaki resimde gösterilen şey bu. Ancak vbproj dosyasını, içinde bulunduğu projeyi düzenlerken aynı anda düzenleyemezsiniz. Bu yüzden projeyi kapatın ve sadece vbproj dosyasını açın. Aşağıdaki resimde gösterildiği gibi düzenleme penceresinde dosyayı görmelisiniz.

(Not derleme her sınıf için elemanlar. Bağımlı alt elemanlar tam olarak aşağıdaki şekilde gösterildiği gibi eklenmelidir. Bu örnek VB 2005'te oluşturulmuştur, ancak VB 2008'de de test edilmiştir.)


Resmi görüntülemek için Buraya tıklayın
Geri dönmek için tarayıcınızdaki Geri düğmesini tıklayın

Birçoğumuz için, muhtemelen kısmi sınıfların orada olduğunu bilmek yeterlidir, bu yüzden gelecekte bir hatayı izlemeye çalışırken ne olduklarını biliyoruz. Büyük ve karmaşık sistemlerin geliştirilmesi için küçük bir mucize olabilirler çünkü kodu daha önce imkansız olacak şekilde düzenlemeye yardımcı olabilirler. (Kısmi yapılara ve kısmi arayüzlere de sahip olabilirsiniz!) Ancak, bazı insanlar Microsoft'un bunları yalnızca dahili nedenlerle icat ettikleri sonucuna varmışlardır - kod üretimlerini daha iyi hale getirmek için. Yazar Paul Kimmel, Microsoft'un dünyadaki geliştirme çalışmalarının dış kaynak kullanımını daha kolay hale getirerek maliyetlerini düşürmek için aslında kısmi sınıflar oluşturduğunu öne sürdü.

Olabilir. Yapabilecekleri bir şey.