尝试理解错误消息

本文关键字:错误 消息 | 更新日期: 2023-09-27 18:33:54

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

可访问性不一致:属性类型"WindowsFormApplication1.ContactFiles.Contact"比属性"WindowsFormApplication1.ContactForm.ContactData"更难访问

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

感谢帮助找到此问题的错误源!谢谢!

尝试理解错误消息

ContactFiles.Contact标记为public以解决错误。

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

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

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

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

基本上,你不能让公共属性返回内部(或私有嵌套)类型 - 它实际上是在说"你可以使用它,但你不被允许知道我将返回什么",这是没有意义的。对于常规方法的参数和返回类型也是如此。您也不能从内部类派生公共类。

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