Ayrı DLL'lerde kısmi bir sınıfa iki bölüm (aynı ad alanı, aynı sınıf adı) sahip olmak mümkün müdür?
Ayrı DLL'lerde kısmi bir sınıfa iki bölüm (aynı ad alanı, aynı sınıf adı) sahip olmak mümkün müdür?
Yanıtlar:
Gönderen MSDN -Kısmi Sınıflar ve Yöntemleri :
Aynı türden parçalar olması gereken tüm kısmi tip tanımları aynı montajda ve aynı modülde (.exe veya .dll dosyası) tanımlanmalıdır. Kısmi tanımlar birden fazla modüle yayılamaz.
Hayır. Kısmi sınıflar tamamen dil özelliğidir. Bir derleme derlendiğinde, dosyalar tür oluşturmak için birleştirilir. Dosyaları farklı montajlara yaymak mümkün değildir.
Ne yapmak istediğinize bağlı olarak, ihtiyacınız olanı başarmak için uzantı yöntemlerini kullanabilirsiniz .
Hayır, bu mümkün değil. Derleme derlendiğinde sınıfın tamamlanması gerekir.
Diğer cevaplar, bu sayfaya inen kimsenin görmek veya duymak istemediği hoş olmayan "Hayır" ı sağlasa da, burada henüz belirtilmeyen başka bir düşünce beni etkiledi. Meclisler arasında kısmi sınıflara izin verildiyse, kendisi tarafından yazılmamış mevcut türlerin özel üyelerine erişebilir, böylece orijinal yazar tarafından tasarlanmayan şekillerde manipüle edilmesine izin verilir, böylece tüm miras sınıflarının işlevselliği tehlikeye girer çok.
Sadece bu da değil, diğer meclislerdeki (ve çocuklarının) bu sınıfların çalışması için yeniden derlenmesi gerekir. Dolayısıyla, bir sınıfın farklı montajlar üzerinde bölünmesine izin vermek mantıklı olarak mümkün değildir.
Farklı bir dll'de bir sınıfa yöntem eklemek istediğinizde uzantı yöntemlerini kullanabilirsiniz. Bu yöntemin tek dezavantajı statik yöntemler ekleyememenizdir.
Soru, neden başka bir mecliste kısmi bir sınıf yapmak istersiniz? Montajlar arasında soyut sınıfları ve arayüzleri tanımlayabilirsiniz, belki de buna bakmanız gerekir.
Muhtemelen kendi kütüphaneniz içinde, 3. bölüm kütüphanesindeki sınıfın etrafında bir Wrapper sınıfı oluşturmak istiyorsunuz. Ardından, sarma sınıfına herhangi bir işlevsellik ekleyin.