我对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; }