I'm trying to pass an object (a reference to the currently logged on user, basically) between two forms. At the moment, I have something along these lines in the login form:
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...
on the next form (clients), I have:
public partial class clients : Form
{
private ACTInterface oActInt {get; set;}
public clients(ACTInterface _oActInt)
...which results in me getting:
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
I don't really understand what the problem is - both fields are private, and accessed by the relevant public method from the form. Googling doesn't really help, as it just points towards one element being public and the other private, which isn't the case here.
Anybody help?
What is the accessibility of the type
support.ACTInterface
. The error suggests it is not public.You cannot expose a public method signature where some of the parameter types of the signature are not public. It wouldn't be possible to call the method from outside since the caller couldn't construct the parameters required.
If you make
support.ACTInterface
public that will remove this error. Alternatively reduce the accessibility of the form method if possible.When I received this error, I had a "helper" class that I did not declare as public that caused this issue inside of the class that used the "helper" class. Making the "helper" class public solved this error, as in:
public ServiceClass { public ServiceClass(HelperClass _helper) { } }
public class HelperClass {} // Note the public HelperClass that solved my issue.
This may help someone else who encounters this.
what ever u provide class ActInterface is under private class thats way it is getting error
change that class type to Public ActInterface it will resolve
Constructor of
public
classclients
ispublic
but it has a parameter of typeACTInterface
that isprivate
(it is nested in a class?). You can't do that. You need to makeACTInterface
at least as accessible asclients
.Try making your constructor private like this: