現在、私はCMS内にいくつかのカスタムページタイプを持っています。ドキュメントを操作する際に型の安全性を確保するため、組み込みのコードジェネレータを使用して各ページタイプのクラスを作成しました。 2つのクラスを生成たとえば、私はホワイトペーパーとKenticoコードジェネレータと呼ばれるページの種類を持っている:現在のドキュメントにカスタムページタイプクラスを使用する方法
public partial class Whitepaper : TreeNode { }
public partial class WhitepaperProvider { }
私は直接のようなプロバイダを使用して特定の文書を照会していた場合、これらのクラスは素晴らしい仕事:
WhitepaperProvider.GetWhitepapers().TopN(10);
しかし、WhitepaperProvider
を使用してドキュメントを再クエリすることなく、現在のドキュメントにWhitepaper
クラスを使用できるようにします。どのように私は、現在のドキュメントのための私のカスタムページ・タイプのクラスを使用します
// This is what I'm using
TreeNode currentDocument = DocumentContext.CurrentDocument;
var summary = currentDocument.GetStringValue("Summary", string.Empty);
// This is what I'd like to use, because I know the template is for whitepapers
Whitepaper currentWhitepaperDocument = // what goes here?
summary = currentWhitepaperDocument.Summary;
:?この場合、私は、ホワイトペーパーのカスタムページテンプレートを持っており、背後にあるコードで、私はそれのためにカスタムクラスを使用できるようにしたいですか
UPDATE
答えている限り、クラスが現在のページタイプに対して登録されているようas
作品を使用して言及しています。私はDocumentContext.CurrentDocumentが常にTreeNodeを返すと仮定しているので、これはうまく動作するとは思っていませんでした(したがって、あなたはcontravarianceの問題があります)。ページタイプにクラスが登録されている場合は、代わりにそのクラスのインスタンスが返され、as
を使用できるようになります。
は、あなたのカスタムクラスとして現在の文書をキャストしようとしたことがあり?:ホワイトペーパーcurrentWhitepaperDocument = DocumentContext。 WhitepaperとしてCurrentDocument –