2012-03-15 27 views
14

daha az erişilebilir Bir form sınıfından diğerine bir liste geçirmeye çalışıyorum. Benim BranchOverview sınıfında sonraParametre, yöntemden

List<Branch> myArgus = new List<Branch>(); 

private void btnLogin_Click(object sender, EventArgs e) 
{ 
    // Get the selected branch name 
    string selectedBranch = lbBranches.SelectedItem.ToString(); 
    for (int i = 0; i < myArgus.Count; i++) 
    { 
     if (myArgus[i]._branchName == selectedBranch) 
     { 
      // Open the BranchOverview form 
      BranchOverview branchOverview = new BranchOverview(myArgus[i]); 
      branchOverview.Show(); 
     } 
     else 
     { 
      // Branch doesn't exist for some reason 
     } 
    } 
} 

Ve: İşte kod Varsayılan olarak

Inconsistent accessibility: parameter type 'System.Collections.Generic.List<Argus.Branch>' is less accessible than method 'Argus.BranchOverview.BranchOverview(System.Collections.Generic.List<Argus.Branch>)' 
+0

Evet, tamam. Peki, sorunuz ne? Hata mesajının ne anlama geldiğini anlamıyor musunuz? Ya da anlıyor musunuz ama nasıl tamir edeceğinizi bilmiyorsunuz? Ya da nasıl düzelteceğinizi anlıyor musunuz, ama iki farklı yaklaşım arasında karar kestiniz mi? –

+1

Olası çoğaltılabilir [Tutarsız Erişilebilirlik: Parametre yönteminden daha az erişilebilir] (http://stackoverflow.com/questions/6229504/inconsistent-accessibility-parameter-type-is-less-accessible-than-method) – user

cevap

40

Genel olarak Branch beyan etmek zorunda.

+0

Ah, buydu, teşekkürler. 'Şube' sınıfında, aynı zamanda halkın da bulunmadığı sınıflardan başka nesneler yaratıyordum. Şerefe! –

+0

Çok teşekkürler, daha önce OOP'u öğrendim ama bunu hala unutuyorum. – duykhoa

+0

@duykhoa: çok hoş geldiniz – MiMo

1

, bir sınıfın alanları: Ben kodu çalıştırdığınızda

List<Branch> branch = new List<Branch>(); 

public BranchOverview(List<Branch> myArgus) 
{ 
    InitializeComponent(); 

    branch = myArgus; 
} 

, bu hatayı alıyorum access modifier varsa private vardır ...

8

Hata mesajı olarak Ays, bir yöntemin tüm parametrelerinin türü en azından yöntemin kendisi kadar erişilebilir olmalıdır. Genel bir yöntemde parametre olarak kullanıyorsanız, Branch sınıfınızı halka açık hale getirmeniz gerekir.

public class Branch { .... } 
^^^^^^ 

Alternatif internal yerine public olmak için yöntemini değiştirebilir.

internal BranchOverview(List<Branch> myArgus) 
^^^^^^^^ 
+0

Teşekkürler "İç" hakkında bir şey bilmiyordum. Geçtiğimiz günlerde bir çok zaman geçtikten sonra, bileşik sınıfları herkese açık olarak değiştirdi (herkesi değiştir, daha fazla hata oluştu.) İlgilenen herkes için daha fazla bilgiye http://msdn.microsoft.com/en-us/ adresinden ulaşılabilir. kitaplık/7c5ka91b (v = VS.80) .aspx. – joshhendo

1

BranchOverview yapıcısı onun biçimsel parametre listesinde yer alan bütün türleri de public olmalıdır, yani public olduğunu. Büyük olasılıkla size yani Branch için bir erişilebilirlik özelliklerine sunmadınız sen Branchinternal demektir

class Branch { ... } 

yazdım.

public class Branch { 
    . . . 
} 
0

Değişim:

List<Branch> myArgus = new List<Branch>(); 

kamu olmak