J'essaie de passer un objet (une référence à l'utilisateur actuellement connecté, essentiellement) entre deux formulaires. Pour le moment, j'ai quelque chose dans ce sens dans le formulaire de connexion:
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...
sur le formulaire suivant (clients), j'ai:
public partial class clients : Form
{
private ACTInterface oActInt {get; set;}
public clients(ACTInterface _oActInt)
... ce qui me fait obtenir:
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
Je ne comprends pas vraiment quel est le problème - les deux champs sont privés et accessibles par la méthode publique appropriée à partir du formulaire. La recherche sur Google n'aide pas vraiment, car elle indique simplement qu'un élément est public et l'autre privé, ce qui n'est pas le cas ici.
Quelqu'un vous aide?
Rendez la classe publique.
est le même que:
donc la classe doit être publique
la source
Si sonne comme le type
ACTInterface
ne l'est paspublic
, mais utilise l'accessibilité par défaut deinternal
(s'il est de niveau supérieur) ouprivate
(s'il est imbriqué dans un autre type).Donner au type le
public
modificateur le corrigerait.Une autre approche consiste à définir à la fois le type et la méthode
internal
, si telle est votre intention.Le problème n'est pas l'accessibilité du champ (
oActInterface
), mais plutôt du typeACTInterface
lui-même.la source
Quelle est l'accessibilité du type
support.ACTInterface
. L'erreur suggère que ce n'est pas public.Vous ne pouvez pas exposer une signature de méthode publique lorsque certains types de paramètres de la signature ne sont pas publics. Il ne serait pas possible d'appeler la méthode de l'extérieur car l'appelant n'a pas pu construire les paramètres requis.
Si vous rendez
support.ACTInterface
public cela supprimera cette erreur. Vous pouvez également réduire l'accessibilité de la méthode de formulaire si possible.la source
Le problème ne semble pas être lié à la variable mais plutôt à la déclaration d'ACTInterface. ACTInterface est-il déclaré comme interne par hasard?
la source
Lorsque j'ai reçu cette erreur, j'avais une classe "helper" que je n'ai pas déclarée publique qui a causé ce problème à l'intérieur de la classe qui utilisait la classe "helper". Rendre la classe "helper" publique a résolu cette erreur, comme dans:
public ServiceClass {public ServiceClass (HelperClass _helper) {}}
classe publique HelperClass {} // Notez la HelperClass publique qui a résolu mon problème.
Cela peut aider quelqu'un d'autre qui rencontre cela.
la source
L'erreur indique que «support.ACTInterface» est moins accessible car vous avez rendu l'interface privée, au moins la rendre interne ou la rendre publique.
la source
Vous pouvez obtenir Parameter (classe qui a moins d'accessibilité),
object
puis le convertir en votre classe paras
mot-clé.la source
Si cette erreur se produit lorsque vous souhaitez utiliser une variable de classe dans un nouveau formulaire, vous devez placer la définition de classe dans le
au lieu du fichier Formname.cs.
la source
Après avoir mis à jour mon modèle de structure d'entité, j'ai trouvé cette erreur infectant plusieurs fichiers dans ma solution. J'ai simplement fait un clic droit sur mon fichier .edmx et mon fichier TT et cliquez sur "Exécuter l'outil personnalisé" et cela m'a de nouveau eu raison après un redémarrage de Visual Studio 2012.
la source
Essayez de rendre votre constructeur privé comme ceci:
la source