5

Glass マッパーは初めてで、Sitecore プロジェクトで使用したいと考えていました。チュートリアルを見ると、Sitecore が許可する深い継承を設定する方法の詳細な例がないことに気付きました。Web をブラウジングしていると、インターフェースに属性を配置する作業を行っている人や、具象クラスに属性を配置している人がいることに気付きました。これらの例のいずれも、そうする正当な理由を説明していませんが、疑問が残ります:どちらが正しい使用法であり、どちらか一方を行うことの影響は何ですか?

次の点を考慮してください。

テンプレート: コンテンツ (タイトル、本文の 2 つの単純なフィールドを追加するフィールド セクション テンプレート) このテンプレートは、多くのテンプレートによって直接的および間接的に継承されます。

ここで、サブレイアウトの 1 つでこのセクションのみを使用します。これは一種のより一般的なコントロールであるため、実行する必要がありGetCurrentItem<Content>ますGetCurrentItem<IContent>

個人的にGetCurrentItem<IContent>は、「コンテンツ セクションをサポートしている場合は現在のアイテムをください」と尋ねているように感じられるので、より直感的だと思いますコンテンツ アイテムは作成されません)

4

2 に答える 2

2

一般に、インターフェイスを使用して Sitecore テンプレートをモデリングする方が良いオプションであることがわかります。これにより、Sitecore に存在するのと同じように、コードでテンプレート構造をモデル化できます。例えば、

public interface IMyPageTemplate : IBaseTemplate1, IBaseTemplate2 {

}

通常、多数の基本テンプレートがあるため、具体的なクラスでテンプレートをモデル化することははるかに困難です。おそらく、インターフェースと具象クラスのある種の組み合わせを検討する価値があります (ただし、私はこれを試したことはありません)。おそらく、厳密にベース テンプレートであるテンプレートはIContentインターフェイスとしてモデル化する必要があり、コンテンツとして作成できるすべてのテンプレートは具象クラスとしてモデル化する必要があります。

のようなことをするのは有効ですGetCurrentItem<IContent>()。返されるのは、独自の課題を提供できるプロキシ クラスであることに注意してください (実行内容によって異なります)。

于 2013-04-03T13:34:21.290 に答える