Accesibilidad inconsistente: el tipo de parámetro es menos accesible que el método

Resuelto dodgrile asked hace 13 años • 13 respuestas

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?

dodgrile avatar Jun 03 '11 22:06 dodgrile
Aceptado

Constructor de publicclase clientses publicpero tiene un parámetro de tipo ACTInterfaceque es private(¿está anidado en una clase?). No puedes hacer eso. Debes hacerlo ACTInterfaceal menos tan accesible como clients.

jason avatar Jun 03 '2011 15:06 jason

Haz pública la clase.

class NewClass
{

}

es lo mismo que:

internal class NewClass
{

}

Entonces la clase tiene que ser pública.

Nisha avatar Mar 26 '2012 15:03 Nisha

Si parece que el tipo ACTInterfaceno 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 publicmodificador 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 ACTInterfaceen sí.

Marc Gravell avatar Jun 03 '2011 15:06 Marc Gravell