当我向具有可为空属性的 T4 模板提供对象时,除非我明确写入 <#= obj.Property ?? string.Empty #>
ToStringWithCulture(object objectToConvert)
为模板生成的方法抛出 ArgumentNullException
如果该属性为空。是否有任何简洁或优雅的方法来覆盖此行为,以便我不必在我的模板中使用 null 合并?
最佳答案
劳埃德的回答基本正确但不完整。即使在编辑模板后,您也必须覆盖基模板类以使更改保持不变。就是这样:
TemplateBase.cs
TemplateBase.cs
.自动生成的基类可以在 Visual Studio 中的 .tt 模板下找到。它叫YourTemplateBase
它包含(除其他外)public class ToStringInstanceHelper
问题中提到。 TemplateBase.cs
:/// <summary>
/// Required to make this class a base class for T4 templates
/// </summary>
public abstract string TransformText();
YourTemplate.tt
中添加基本模板声明:<#@ template language="C#" Inherits="TemplateBase" #>
进行此更改后,您的模板将不再生成基类。
ToStringInstanceHelper
中进行以下编辑嵌套在里面 TemplateBase.cs
:public string ToStringWithCulture(object objectToConvert)
{
if (objectToConvert == null)
return "";
...
}
归功于 mnaoumov:https://mnaoumov.wordpress.com/2012/09/27/t4-runtime-templates-base-class/
关于.net - T4 模板 : any way to make ToStringWithCulture() convert null to string. 空而不是抛出异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30241543/