2013-05-07 4 views
13

Auf diesen Code in meinem Projekt writting Ich erhalte die Fehlermeldung, dassSo lösen Sie den Fehler: Inkonsistente Zugänglichkeit: Parametertyp für generische C# -Schnittstelle?

Error 1 Inconsistent accessibility: field type 'System.Collections.Generic.List<Jain_milan.Childrendata>' is less accessible than field 'Jain_milan.addchild.m_children'
Error 2 Inconsistent accessibility: parameter type 'System.Collections.Generic.List<Jain_milan.Childrendata>' is less accessible than method 'Jain_milan.addchild.addchild(System.Collections.Generic.List<Jain_milan.Childrendata>)'

namespace Jain_milan 
{ 
     public partial class addchild : Form 
     { 
      List<Label> label = new List<Label>(); 
      List<TextBox> textbox = new List<TextBox>(); 
      List<ComboBox> combobox = new List<ComboBox>(); 
      List<DateTimePicker> datetimepicker = new List<DateTimePicker>(); 
      public List<Childrendata> m_children = new List<Childrendata>(); 
      public addchild(List<Childrendata> children) 
      { 
       InitializeComponent(); 
       this.m_children = children; //Initialize the same List as sent by Mainform 
      } 
+3

Welchen Teil der Nachricht, die Sie nicht verstehen? – SLaks

+3

Überprüfen Sie die Zugriffsmodifizierer für die von Ihnen verwendeten Klassen. –

+2

Es heißt, dass ein öffentliches Element einen privaten Typ verwendet. Stellen Sie sicher, dass die Zugriffsmodifizierer konsistent sind – devshorts

Antwort

26

Ohne Ihre gesamten relevanten Code zu veröffentlichen i eine Ahnung versuchen werde:

die Klasse Childrendata als deklariert nicht-öffentliche und (wie wir sehen können) die Variable m_children ist öffentlich

Threefore eine öffentliche Variable kann nicht expo se eine weniger zugängliche Art, in diesem Fall Childrendata

Zusätzlich, was Sie vielleicht wollen, ist auch m_children privat zu drehen, da dies in der Regel die beste Praxis ist

+1

Es ist klarer, sobald die zitierten Fehler bereinigt sind, da die ursprüngliche Frage die '<>' abgewinkelten Klammern verschluckt hat. –

2

Childrendata nicht öffentlich ist. Wie also erwarten Sie, dass jemand, der addchild ruft, den erforderlichen Parameter bereitstellen kann?

Die offensichtlichen Fixes sind die Zugänglichkeit von addchild oder Childrendata zu ändern.

6

Meine Vermutung ist, dass die Childrendata Klasse private (oder internal oder implizit internal durch keine Sichtbarkeitsmodifizierer Angabe)

Seit List<Childrendata> m_children ist öffentlich, Childrendata Bedürfnisse als auch öffentlich.

Ändern Childrendata zu public und Sie sollten in Ordnung sein.

0

machen nur die Methode addChilde(List<object> childeren) oder nur Objekt nicht Liste dann tun dies

var Listchild = childeren as List<childe>; 
Verwandte Themen