2012-05-08 5 views
0

私は質問音がやや馬鹿だと知っていますが、私はこのシナリオを持っています。.netのプライベートベースタイプから派生したパブリックタイプを作成できますか?

コンテキスト

私は多くの共通点の部品を持っている2つのバックグラウンドタスク(METROのアプリ、WinRTの)を作成しています。 今、私が望むのは、共通の基本クラスで共通の機能を定義し、2つのタスクを基本クラスから派生させることです。

問題:バックグラウンドタスクはWinMDをターゲットにする必要があり、このモードでは非密封パブリッククラスを作成することはできません。私はシールを作成する場合、私はそれから派生することはできません、私はプライベートを作成する場合、ベースはプライベートなので、私は派生型を公開することはできません。

問題:目的の機能を達成する方法は何か。 (民間基地から派生したパブリックタイプ)。 1つの方法はコンポジション(継承の代わりに)を使用することができます

答えて

4

あなたは単純にできません。 .NETでは、派生型を基本型よりもアクセシブルにすることはできません。基本タイプを公開する必要があります。

内部コンストラクタだけを与えると、他のコードでインスタンス化することも、独自の派生型を作成することもできないことに注意してください。その時点で公開されている問題は何ですか?

EDIT:さて、私は質問を再読し、見てきました。この:

そう

非密封されたpublicクラスを作成することはできません

  • すべてのタイプは内部に関係していますか?
  • あなたは公開することができます抽象クラス? (DOES WinMDはそれを許可する?)

(あなたがWinMDで許可されているものを中心に、他の文書を持っている場合は、それが有用であろう。)

あなたがインタフェースをエクスポートすることができている場合は、おそらくあなたを持つことができます基本クラスと派生したクラスを内部で実装しますが、パブリックインターフェイスを実装します。その後、パブリック静的メソッドをパブリック静的クラスで使用して、これらの内部型のインスタンスを作成し、インタフェース経由でそれらを戻します。 WinMDで許可されているものの周りのドキュメントへのリンクがあれば、それはWinRTの開発をしていない人にとって役に立ちます。

0

はい、あなたはその後、派生クラスでそれを隠すbase.Property、すなわち、

new public ScrollBar HorizontalScrollBar 
    { 
     get { return base.HorizontalScrollBar; } 
    } 
を公開することができます
関連する問題