3

当我尝试将参数发送到运行时文本模板 t4 (net core) 时,我在使用 .net Core 的“CallContext.LogicalGetData”方法中遇到问题

tt文件下方:

<#@ template language="C#" #>
<#@ assembly name="System.Core" #>
<#@ import namespace="System.Linq" #>
<#@ import namespace="System.Text" #>
<#@ import namespace="System.Collections.Generic" #>
<#@ parameter name="firstName" type="System.String" #>
<#@ parameter name="lastName" type="System.String" #>

和 Cs 调用方法:

            var pt1 = new ParamTemplate1();
            pt1.Session = new Dictionary<string, object>();
            pt1.Session["firstName"] = "David";
            pt1.Session["lastName"] = "Giard";
            pt1.Initialize();
            var outputText1 = pt1.TransformText();
            Console.WriteLine(outputText1);
             Hello <#=firstName #> <#=lastName #>!

问题是由于.net核心不支持“System.Runtime.Remoting”库

任何想法或解决方法?

谢谢。

4

1 回答 1

3

抱歉回复晚了,但是如果您仍然想使用 t4 模板,您可以将参数指令替换为 t4 文档末尾的属性:

<#+
    public string FirstName { get; set; }
    public string LastName { get; set; }
#>

然后调用它:

var pt1 = new ParamTemplate1
{ 
    FirstName = "David",
    LastName = "Giard"
};
var outputText1 = pt1.TransformText();
Console.WriteLine(outputText1);
于 2021-03-20T08:55:43.157 回答