如何在C# TBB(C#代码片段)中添加用户定义的方法?

7

我正在创建一个C# TBB(C#代码片段)。为此,我需要编写一个自定义方法。我尝试使用<%! %>来创建它。如何在代码中访问用户定义的方法。提前感谢您的帮助。请为我提供解决此问题的方法。

3个回答

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"%> 

运行指定的.NET程序集模板生成块,其URI由Template属性标识。此语句通常是由SDL Tridion 2009自动生成的,当您上传.NET程序集时,它将提供对.NET程序集中特定类的访问。

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

插入对非标准 .NET 程序集的引用,该程序集必须存在于全局程序集缓存中。使用完整的程序集名称。


请问您能提供一下您获取这个信息的文档页面链接吗? - Frank van Puffelen

3

这是文档参考链接,其中包含Nickol所指的示例,有关IT技术的内容。


1

查看以下链接,获取有关在 C# 代码片段中创建函数和类的完整详细信息。

  1. 函数: https://rcnitesh.wordpress.com/2015/04/23/functions-in-c-tbb/
    [要获取包括代码示例在内的完整详情,请查看上述链接]

  2. 类: https://rcnitesh.wordpress.com/2015/04/24/creating-user-defined-classes-in-c-code-fragment/ 以下摘自上述博客:

使用结构 <%! %> 在 C# 代码片段中定义类。

这个用户定义的类被放置在Tridion编译C#代码片段时创建的预定义类的嵌套类中。请参阅此博客文章,深入了解C#代码片段编译和Tridion生成的预定义类和方法,以及理解Tridion预定义类与C#代码片段中用户定义类之间的关系。
上面所说的,我们需要理解的是,在C#代码片段中,用户定义的类无法访问预定义变量,例如log、engine和package,因为这些变量实际上在编译期间生成的预定义类中被声明为私有变量。
[有关包括代码示例在内的完整详细信息,请查看上面的链接]

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接