Ich versuche, ein Objekt (im Grunde genommen einen Verweis auf den aktuell angemeldeten Benutzer) zwischen zwei Formularen zu übergeben. Im Moment habe ich etwas in dieser Richtung im Anmeldeformular:
private ACTInterface oActInterface;
public void button1_Click(object sender, EventArgs e)
{
oActInterface = new ACTInterface(@"\\actserver\Database\Premier.pad",this.textUser.Text,this.textPass.Text);
if (oActInterface.checkLoggedIn())
{
//user has authed against ACT, so we can carry on
clients oClientForm = new clients(oActInterface);
this.Hide();
oClientForm.Show();
}
else...
Auf dem nächsten Formular (Kunden) habe ich:
public partial class clients : Form
{
private ACTInterface oActInt {get; set;}
public clients(ACTInterface _oActInt)
... was dazu führt, dass ich bekomme:
Error 1 Inconsistent accessibility:
parameter type 'support.ACTInterface' is less accessible than method
'support.clients.clients(support.ACTInterface)'
c:\work\net\backup\support\support\clients.cs 20 16 support
Ich verstehe das Problem nicht wirklich - beide Felder sind privat und werden über die entsprechende öffentliche Methode über das Formular aufgerufen. Googeln hilft nicht wirklich, da es nur darauf hinweist, dass ein Element öffentlich und das andere privat ist, was hier nicht der Fall ist.
Hilft jemand?
Machen Sie die Klasse öffentlich.
ist das gleiche wie:
Die Klasse muss also öffentlich sein
quelle
Wenn dies so klingt, als ob der Typ dies
ACTInterface
nicht istpublic
, aber die Standardzugriffsmöglichkeit entwederinternal
(wenn es sich um die oberste Ebene handelt) oderprivate
(wenn er in einem anderen Typ verschachtelt ist) verwendet.Wenn Sie dem Typ den
public
Modifikator geben, wird dies behoben.Ein anderer Ansatz besteht darin, sowohl den Typ als auch die Methode festzulegen
internal
, wenn dies Ihre Absicht ist.Das Problem ist nicht die Zugänglichkeit des Feldes (
oActInterface
), sondern des TypsACTInterface
selbst.quelle
Was ist die Zugänglichkeit des Typs
support.ACTInterface
. Der Fehler deutet darauf hin, dass es nicht öffentlich ist.Sie können keine öffentliche Methodensignatur verfügbar machen, wenn einige der Parametertypen der Signatur nicht öffentlich sind. Es wäre nicht möglich, die Methode von außen aufzurufen, da der Aufrufer die erforderlichen Parameter nicht erstellen konnte.
Wenn Sie dies veröffentlichen
support.ACTInterface
, wird dieser Fehler behoben. Alternativ können Sie die Zugänglichkeit der Formularmethode nach Möglichkeit verringern.quelle
Das Problem scheint nicht bei der Variablen zu liegen, sondern bei der Deklaration von ACTInterface. Wird ACTInterface zufällig als intern deklariert?
quelle
Als ich diesen Fehler erhielt, hatte ich eine "Helfer" -Klasse, die ich nicht als öffentlich deklariert habe und die dieses Problem innerhalb der Klasse verursacht hat, die die "Helfer" -Klasse verwendet hat. Durch die Veröffentlichung der "Helfer" -Klasse wurde dieser Fehler wie folgt behoben:
public ServiceClass {public ServiceClass (HelperClass _helper) {}}
öffentliche Klasse HelperClass {} // Beachten Sie die öffentliche HelperClass, die mein Problem gelöst hat.
Dies kann jemand anderem helfen, der darauf stößt.
quelle
Der Fehler besagt, dass 'support.ACTInterface' weniger zugänglich ist, da Sie die Schnittstelle als privat, zumindest intern oder öffentlich gemacht haben.
quelle
Sie können Parameter (Klasse mit geringerer Zugänglichkeit)
object
abrufen, indem Sie ihn dann peras
Schlüsselwort in Ihre Klasse konvertieren .quelle
Wenn dieser Fehler auftritt, wenn Sie eine Klassenvariable in einem neuen Formular verwenden möchten, sollten Sie die Klassendefinition in das Feld einfügen
anstelle der Datei Formname.cs.
quelle
Nach dem Aktualisieren meines Entity-Framework-Modells stellte ich fest, dass dieser Fehler mehrere Dateien in meiner Lösung infizierte. Ich habe einfach mit der rechten Maustaste auf meine .edmx-Datei und meine TT-Datei geklickt und auf "Benutzerdefiniertes Tool ausführen" geklickt. Nach einem Neustart von Visual Studio 2012 war ich wieder richtig.
quelle
Versuchen Sie, Ihren Konstruktor folgendermaßen privat zu machen:
quelle