我不是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)这个。)ThePerson.Birthday
这很有效,但看起来很糟糕。
有没有更好的方法来引用已实现的属性?
答案 0 :(得分:23)
看起来你在样本中留下了一条线。我相信实现中的ThePerson系列应该是
Person IApplicationPage.ThePerson { get; set; }
这种类型的实现称为显式接口实现。这意味着只有在通过接口类型的引用看到对象时才能查看该成员。
如果您希望通过具体类型引用查看该成员,请将其公开并删除显式实现
public Person ThePerson { get; set; }
答案 1 :(得分:2)
将它们实现为公共属性:
public partial class tripapplication2 : System.Web.UI.Page, IApplicationPage
{
public Person ThePerson { get; set; }
public Application IApplicationPage.Application { get; set; }
}
修改强>
现在编辑的问题显示这些问题最初是作为显式实现的。所以,我应该重申我的实现它们作为公共而不是显式的属性实现。