BlockData クラスが IContent を直接実装しない理由を知っている人はいますか? BlockData がデータベースから取得されている間、Castle によって作成されたプロキシは IContent を実装することを知っています。
StackOverflow がこの種の質問に適していない場合は、移動してください。
BlockData クラスが IContent を直接実装しない理由を知っている人はいますか? BlockData がデータベースから取得されている間、Castle によって作成されたプロキシは IContent を実装することを知っています。
StackOverflow がこの種の質問に適していない場合は、移動してください。
BlockData は、PageData インスタンス (別名ローカル ブロック) などの別のコンテンツ アイテムに追加された場合と、スタンドアロン インスタンス (別名共有ブロック) の両方で機能することを意図しているため、IContent を実装します。後者の場合、Castle Windsor を介して mix-in を使用してインターフェイスを追加し、参照できるようにします。
このコンストラクトの決定は、ブロックがローカルか共有かに関係なく、同じレンダリング テンプレートを使用できるようにすることに基づいていました。そのため、ローカル ブロックに多数の空のプロパティを持つか、ミックスインを使用する現在のソリューションのどちらかを選択する必要がありました。両方のオプションがテストされ、最適なソリューションではありませんが、ミックスインが選択されました。
BlockData は「IContent を実装しています」。
var myContent = (IContent)myBlock;
ただし、それ自体がプロパティ(ContentReference ではない) である Block を処理している場合、そのキャストは例外をスローします。
これは、すべてのケース (... Math.Round を使用) の 100% に当てはまります。