我对C#并不陌生,但是我发现了一个令人费解的行为。

我有一个界面

public interface IApplicationPage
{
    Person ThePerson { get; set;  }
    Application Application { get; set; }
}

我在页面上实现界面
public partial class tripapplication2 : System.Web.UI.Page, IApplicationPage
{
    Person IApplicationPage.ThePerson { get; set; }
    Application IApplicationPage.IApplicationPage.Application { get; set; }
}

但是,当我尝试在页面本身中引用ThePerson时,我需要跳过去。例如。

1)ThePerson.Birthday

给出一个错误消息:“名称'ThePerson'在当前上下文中不存在。”

2)((IMissionTripApplicationPage)this).ThePerson.Birthday

这可行,但是看起来很糟糕。

有没有更好的方法来引用已实现的属性?

最佳答案

您似乎在示例中留下了一条线。我相信实现中的ThePerson行应显示为

Person IApplicationPage.ThePerson { get; set; }

这种实现方式称为显式接口(interface)实现。这意味着仅当通过接口(interface)类型的引用看到对象时,该成员才可见。

如果希望该成员通过具体的类型引用可见,则将其公开并删除显式实现
public Person ThePerson { get; set; }

10-08 17:02