2

我在 VisualStudio 中收到一条我自己无法解决的错误消息。消息是:

可访问性不一致:属性类型“WindowsFormApplication1.ContactFiles.Contact”的可访问性低于属性“WindowsFormApplication1.ContactForm.ContactData”

public ContactFiles.Contact ContactData
    {
        get
        {
            return m_contact;
        }
        set
        {
            if (value != null)
                m_contact = value;
        }
    }

Preciate帮助查找此问题的错误源!谢谢!

4

3 回答 3

5

标记ContactFiles.Contactpublic以解决错误。

您的public属性ContactData正在返回非公共类型的实例ContactFiles.Contact

于 2012-05-10T05:40:50.270 回答
2

Kyle 提出了一种方法,但如果这会导致更多(类似)错误,那么您可以尝试另一种方法:将您的属性设为内部:

internal ContactFiles.Contact ContactData
{
    // Code as before
}

如果您需要该属性是公共的,那么您需要Contact是公共的……这意味着您需要查看 的所有公共属性Contact以查看它们是否引用内部(或私有)类型等。

基本上你不能让一个公共属性返回一个内部(或私有嵌套)类型——它实际上是在说“你可以使用它,但你不能知道我将返回什么”,这不是有道理。普通方法的参数和返回类型也是如此。您也不能从内部类派生公共类。

于 2012-05-10T05:54:55.860 回答
0

当您尝试在公共可用的方法中返回内部或私有对象时,会发生此异常。如果您尝试将私有已知对象授予公共方法,则会发生相同的异常

于 2012-05-10T05:45:45.873 回答