Accesibilidad inconsistente: el tipo de parámetro es menos accesible que el método
Estoy intentando pasar un objeto (una referencia al usuario actualmente conectado, básicamente) entre dos formularios. Por el momento, tengo algo como esto en el formulario de inicio de sesión:
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...
en el siguiente formulario (clientes), tengo:
public partial class clients : Form
{
private ACTInterface oActInt {get; set;}
public clients(ACTInterface _oActInt)
...lo que da como resultado que obtenga:
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
Realmente no entiendo cuál es el problema: ambos campos son privados y se accede a ellos mediante el método público correspondiente desde el formulario. Buscar en Google realmente no ayuda, ya que solo indica que un elemento es público y el otro privado, lo cual no es el caso aquí.
¿Alguien ayuda?
Constructor de public
clase clients
es public
pero tiene un parámetro de tipo ACTInterface
que es private
(¿está anidado en una clase?). No puedes hacer eso. Debes hacerlo ACTInterface
al menos tan accesible como clients
.
Haz pública la clase.
class NewClass
{
}
es lo mismo que:
internal class NewClass
{
}
Entonces la clase tiene que ser pública.
Si parece que el tipo ACTInterface
no lo es public
, pero utiliza la accesibilidad predeterminada de internal
(si es de nivel superior) o private
(si está anidado en otro tipo).
Darle al tipo el public
modificador lo solucionaría.
Otro enfoque es crear tanto el tipo como el método internal
, si esa es su intención.
El problema no es la accesibilidad del campo ( oActInterface
), sino del tipo ACTInterface
en sí.