2010-12-20 15 views
6

Çünkü bazen bir arkadaşa ihtiyacım var.C++ ve VB.NET'te C++ arkadaşını nasıl taklit edebilirim?

aşağıdaki hile düşünebilirsiniz:

  1. oku sadece sarıcı - ReadOnlyCollection gibi. Herkes işaretçiyi değiştirilebilir nesnelere tutarken, herkes sadece sarıcıya erişebilir.
  2. Delege yaz - arkadaş nesnenin yapıcısını, parametrelerden biri olarak bir temsilci için bir başvuru verir, yapıcı, bir adresi, nesneyi değiştirmek için kullanılabilecek özel bir yöntemle doldurur.
  3. Yansıma - açıkçası kötü bir fikir. Tamlık için dahil.
  4. Birden çok derleme - arkadaşlarınızı bir araya getirin ve değiştirici yöntemlerinizi internal olarak ayarlayın.
  5. Değiştirilebilir nesneyi açığa çıkarın, ancak değiştirici yöntemlerine yorum ekleyin "Bu bir altyapı yöntemidir - onu arama!"
  6. Nested classes.
  7. Add System.ComponentModel.EditorBrowsable(System.ComponentModel. EditorBrowsableState.Never) Eğer tek arkadaşı IntelliSense saklamaya erişmek istediğiniz üyesine özniteliği.
  8. Kapalı arayüz uygulaması - yorumlara bakın.

Bu liste kapsamlı mı? Performansı düşürmek için bunları sıralayan var mı? Azaltıcı düzenlilik sırası? Hangi önerileri kullanacaksınız?

+2

İç içe geçmiş türleri muhtemelen unutmuşsunuzdur. –

+1

Ve elbette, örtülü arayüz uygulaması. Bu yöntemi gerçekten gizlemez, ancak ona erişmek için bir şeyler yapmanız gerekir (bu arayüze yayın). – Alex

+0

Arkadaş taklit etmek için yuvalanmış türleri nasıl kullanırım? –

cevap

6

InternalsVisibleTo özniteliğini de kullanabilirsiniz.

Belirli bir derleme için, A, diğer iç montajların A'nın iç türlerine erişebileceğini belirtebilirsiniz. (Özel sınıflar gibi) C# Yuvalanmış sınıflarında

3

++ c arkadaşı benzer:

public class Root 
{ 
    private int a; // accessible for friendroot 

    public int b; 

    public class FriendOfRoot 
    {   
     public int d; 
    } 

} 

Düzenleme: Burada sağlanan iç içe sınıfları ile arkadaşının simülasyon performansında, sizin için yararlı ise bu hızlı normal sınıflar gibi yeterli (Derlemede her şey belirlenecek ve döküm sorunları yok ve hiçbir yük yok).

İlgili konular