实现接口C#

时间:2009-07-21 15:47:56

标签: c# interface

我不是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

这很有效,但看起来很糟糕。

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

2 个答案:

答案 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; }
}

修改

现在编辑的问题显示这些问题最初是作为显式实现的。所以,我应该重申我的实现它们作为公共而不是显式的属性实现。