Implementing interface C#

荒凉一梦 提交于 2019-12-21 09:08:25

问题


I'm not new to C#, but I have found a behavior that is a little puzzling.

I have an interface

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

I implement the interface on a page

public partial class tripapplication2 : System.Web.UI.Page, IApplicationPage
{
    Person IApplicationPage.ThePerson { get; set; }
    Application IApplicationPage.IApplicationPage.Application { get; set; }
}

However, when I attempt to reference ThePerson in the page itself I need to jump through hoops. For example.

1) ThePerson.Birthday

Gives an error saying "The name 'ThePerson' does not exist in the current context."

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

This works, but it looks awful.

Is there a better way to reference the implemented properties?


回答1:


It looks like you left a line out in your sample. I believe the ThePerson line in the implementation should read

Person IApplicationPage.ThePerson { get; set; }

This type of implementation is known as an explicit interface implementation. This means the member will only be viewable when the object is seen through a reference of the interface type.

If you want the member to be viewable through a concrete type reference, make it public and remove the explicit implementation

public Person ThePerson { get; set; }



回答2:


Implement them as public properties:

public partial class tripapplication2 : System.Web.UI.Page, IApplicationPage
{
    public Person ThePerson { get; set; }
    public Application IApplicationPage.Application { get; set; }
}

Edit

Question now edited to show these were implemented originally as explicit. So, I should restate mine as implement them as public rather than explicit implementations of the properties.



来源:https://stackoverflow.com/questions/1160069/implementing-interface-c-sharp

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!