2012-05-07 13 views
7

私はC#TBB(C#コード断片)を作成しています。そのためには、私はユーザー定義のメソッドを記述する必要があります。 <%を使って作成しようとしました! %>コード内のユーザー定義メソッドにアクセスする方法。前もって感謝します。この問題を解決する方法を教えてください。C#TBB(C#コードフラグメント)でユーザー定義メソッドを追加する方法は?

答えて

11

TOM.NET APIリファレンスは、次の例を提供上記に加え

<%@ Import Namespace="Tridion.ContentManager.Publishing"%> 
<%! 
private string ExtraString() 
{ 
    return "Something added by the C# template"; 
} 
%> 
log.Debug("Executing C# template"); 
if (engine.RenderMode == RenderMode.Publish) 
{ 
    package.GetByName(Package.OutputName).AppendToStringValue(ExtraString()); 
} 

を、以下の構文がサポートされています

<%@Import Namespace="..." %> 

はに引用符の間に囲まれた名前空間をインポートコードフラグメント。インポートするクラスはすべて、グローバルアセンブリキャッシュに存在する必要があります。

<%! ... %> 

残りのコードフラグメントが使用するためのメソッド、定数およびクラスを宣言します。宣言には文字列 '%>'を含めることはできません。作成するクラスは、コードフラグメント内でのみ参照できることに注意してください。

<%RunTemplate Template="tcm:1-184-2048" Class="Tridion.Templating.Examples.ExampleTemplateClass"%> 

Template属性のURIで識別される特定の.NETアセンブリテンプレートビルディングブロックを実行します。このステートメントは、通常、.NETアセンブリをアップロードするときにSDL Tridion 2009自体によって生成され、.NETアセンブリ内の特定のクラスへのアクセスを提供します。

<%@Assembly Name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"%> 

グローバルアセンブリキャッシュに存在する必要がある非標準.NETアセンブリへの参照を挿入します。完全なアセンブリ名を使用します。

+0

あなたはからこれを得たドキュメントのページへのリンクを提供してくださいできますか? –

1

C#コードフラグメントの関数とクラスの作成の詳細については、以下のリンクを参照してください。

  1. 機能: https://rcnitesh.wordpress.com/2015/04/23/functions-in-c-tbb/
    [コードサンプルを含む完全な詳細については、上記のリンクをチェック]

  2. クラス:

  3. :以下 https://rcnitesh.wordpress.com/2015/04/24/creating-user-defined-classes-in-c-code-fragment/ 上記のブログからの抜粋です。

クラスはC#Coコンストラクトを使用してフラグメント:<%! %>

このユーザー定義クラスは、C#コードフラグメントをコンパイルするときにTridionによって作成されたPREDEFINED CLASSのネストクラスとして配置されます。 C#コードフラグメントのコンパイルと定義済みクラス、tridionによって生成されたメソッド、およびTridionの事前定義されたクラスとC#コードフラグメントのユーザー定義クラスとの関係の詳細については、このブログ記事を参照してください。

上記理解する必要があるのは、C#コードフラグメント内のユーザー定義クラスは、ログ、エンジン、パッケージなどの事前定義された変数にアクセスできないということです。

[コードサンプルを含む完全な詳細については、上記のリンクをチェック]

関連する問題