How to add user defined methods in C# TBB(C# code fragment)?

孤人 提交于 2019-12-21 12:06:21

问题


I am creating a C# TBB(C# Code fragment). For that I need to write a userdefined method. I tried creating it using <%! %>. How to access the user defined method in the code. Thanks in advance. Please suggest me a way to solve this issue.


回答1:


The TOM.NET API reference provides the following example:

<%@ 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());
}

In addition to the above, the following syntax is supported:

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

Imports the namespace enclosed between the quotation marks into the code fragment. Any class you import must be present in the Global Assembly Cache.

<%! ... %> 

Declares methods, constants and classes for the rest of the code fragment to use. The declarations cannot contain the string '%>'. Note that any classes you create can only be referenced within the code fragment.

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

Runs a specific .NET Assembly Template Building Block, identified by the URI in the Template attribute. This statement is typically generated by SDL Tridion 2009 itself when you upload a .NET assembly, to provide access to a specific class in the .NET Assembly.

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

Inserts a reference to a nonstandard .NET assembly, which must be present in the Global Assembly Cache. Use the full assembly name.




回答2:


Here is the documentation reference link with example that Nickol pointing.




回答3:


Check these below links for complete details on creating Functions as well as Classes in a C# Code Fragment.

  1. Functions: https://rcnitesh.wordpress.com/2015/04/23/functions-in-c-tbb/
    [For full details including code samples, check the above link ]

  2. Classes: https://rcnitesh.wordpress.com/2015/04/24/creating-user-defined-classes-in-c-code-fragment/ Below is an excerpt from the above Blog:

Classes are defined inside a C# Code Fragment using the construct: <%! %>.

This USER defined class is placed as NESTED CLASS of the PREDEFINED CLASS created by Tridion when compiling the C# Code fragment. Check this blog post for in depth details on C# Code Fragment compilation and the Predefined classes , methods generated by tridion together with understanding the relation of Tridion’s Predefined class with User defined Class in a C# Code Fragment

That said above, what we need to understand is that the User defined classes in a C# Code Fragment cannot access the predefined variables like: log, engine, and package , since these variables are actually declared Private in the Predefined class generated during compilation.

[For full details including code samples, check the above links ]



来源:https://stackoverflow.com/questions/10477483/how-to-add-user-defined-methods-in-c-sharp-tbbc-code-fragment

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!