不一致的可访问性:参数types不如方法可访问

我试图传递一个对象(基本上是当前login用户的引用)之间的两种forms。 目前,我在login表单中有这样几行:

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... 

在下一个表格(客户),我有:

 public partial class clients : Form { private ACTInterface oActInt {get; set;} public clients(ACTInterface _oActInt) 

…这导致我得到:

 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 

我真的不明白问题是什么 – 这两个字段都是私人的,可以通过相关的公共方法从表单中获取。 谷歌search并没有真正的帮助,因为它只是指向一个元素是公开的而另一个是私有的,在这里并不是这样。

有人帮忙?

publicclients构造函数是public但它有一个ACTInterfacetypes的参数是private (它嵌套在类中)。 你不能这样做。 您需要使ACTInterface至less与clients一样可访问。

使课堂公开

 class NewClass { } 

是相同的:

 internal class NewClass { } 

所以class级必须公开

如果ACTInterfacetypes的声音不public ,但是使用internal (如果是顶层)或private (如果嵌套在另一种types中)的默认可访问性。

public修饰符types将修复它。

如果这是你的意图,另一种方法是使internal的types和方法。

问题不在于字段oActInterface )的可访问性,而在于ACTInterfacetypes本身。

typessupport.ACTInterface的可访问性是什么。 错误表明它不是公开的。

您不能公开方法签名的某些参数types不公开。 由于调用者无法构造所需的参数,所以不可能从外部调用该方法。

如果您提供support.ACTInterface公共,将删除此错误。 如果可能,也可以减less表单方法的可访问性。

这个问题似乎不是与variables相关,而是与ACTInterface的声明有关。 ACTInterface被任何机会声明为内部的?

如果在新窗体中使用类variables时发生此错误,则应将类定义放入

Formname.Designer.cs

而不是Formname.cs文件。

更新我的entity framework模型后,我发现这个错误感染我的解决scheme中的几个文件。 我只需右键单击我的.edmx文件和我的TT文件,然后单击“运行自定义工具”,并重新启动Visual Studio 2012后,我再次正确。

什么都提供类ActInterface是在私人类的方式它是越来越错误

将该类types更改为Public ActInterface它将parsing