gpt4 book ai didi

.net - T4 模板 : any way to make ToStringWithCulture() convert null to string. 空而不是抛出异常?

转载 作者:行者123 更新时间:2023-12-03 21:36:53 25 4
gpt4 key购买 nike

当我向具有可为空属性的 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/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com