不一致的可访问性:参数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并没有真正的帮助,因为它只是指向一个元素是公开的而另一个是私有的,在这里并不是这样。
有人帮忙?
public
类clients
构造函数是public
但它有一个ACTInterface
types的参数是private
(它嵌套在类中)。 你不能这样做。 您需要使ACTInterface
至less与clients
一样可访问。
使课堂公开
class NewClass { }
是相同的:
internal class NewClass { }
所以class级必须公开
如果ACTInterface
types的声音不public
,但是使用internal
(如果是顶层)或private
(如果嵌套在另一种types中)的默认可访问性。
给public
修饰符types将修复它。
如果这是你的意图,另一种方法是使internal
的types和方法。
问题不在于字段 ( oActInterface
)的可访问性,而在于ACTInterface
types本身。
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