在C#中(在T4模板的上下文中,请参见http://www.olegsych.com/2008/03/how-to-generate-multiple-outputs-from-single-t4-template/)
<# String myTemplateVar;
#>
<# if (string.IsNullOrEmpty(myTemplateVar)) {
myTemplateVar= "name";
};
#>
如果尚未通过另一个模板中的T4引擎的外部调用来设置myTemplateVar,则我想给myTemplateVar一个值,该模板将具有以下指令:
CallContext.SetData("myTemplate.myTemplateVar", ExternalTemplateVar);
但是我什至不能在C#中编译为什么?如何解决?
这种事情在PHP中很容易做到,我不明白为什么在C#中看起来如此复杂。
更新:问题是,如果我初始化为Null或Empty以避免编译错误,如何检测到该变量已由外部调用设置?
最佳答案
上面定义的myTemplateVar变量位于模板基础类内部的方法范围内(在TransformText方法内部)。如果您想要一个类级的,则可以使用一个类功能块,就像这样。
<#+ public string myTemplateVar; #>
甚至是静态类:
<#+ public static string myTemplateVar; #>
但是,除了对于C#中的引用类型而言,除了通过其空值来设置变量之外,仍然没有办法知道是否已设置该变量。
关于c# - C#错误:使用未分配的局部变量(上下文Visual Studio T4引擎),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4640366/