2009-07-21 37 views
9

私はC#の新機能ではありませんが、ちょっと困惑している動作が見つかりました。インターフェイスの実装C#

私は私がページ自体にThePersonを参照しようとしたとき、私はフープを介してジャンプする必要がある、しかしページ

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

をインタフェースを実装するインターフェイス

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

を持っています。例えば。

1)ThePerson.Birthday

はというエラーを与える「名 『ThePerson』は現在のコンテキストに存在しません。」

2)((IMissionTripApplicationPage)本).ThePerson.Birthday

これは動作しますが、それはひどい見えます。

実装されたプロパティを参照するには、より良い方法がありますか?

+0

を削除したい場合には動作しない特定のコードを表示することができますか? –

答えて

23

サンプルにラインが残っているようです。私は実装のThePerson行を読むべきであると信じています。

Person IApplicationPage.ThePerson { get; set; } 

このタイプの実装は、明示的なインタフェース実装として知られています。つまり、メンバは、オブジェクトがインタフェースタイプの参照を介して見える場合にのみ表示されます。

あなたはメンバーが、具体的なタイプの参照を介して閲覧すること、それは公開すると明示的な実装

public Person ThePerson { get; set; } 
+2

+1良い説明 –

+1

わかりやすく、私はラインを外しました! (不注意なコピー)。 Jaredに感謝します。 – Daniel

2

パブリックプロパティとしてそれらを実装します。

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

編集

今、これらは明示として元々実装された表示するように編集した質問。だから、私はプロパティを明示的に実装するのではなく、公開として実装するように言い返すべきです。

+0

明示的な実装を公開することはできません(アプリケーションIApplicationPage.Applicationは明示的です) – mmmmmmmm

+0

私は答えたときに明示的ではありませんでした。まあもちろんもちろん。 –

関連する問題