从另一个类获取静态值

本文关键字:静态 获取 另一个 | 更新日期: 2023-09-27 17:57:11

>我在某个类中有一个静态字符串:

public static class SomeClass
{
    public static string MyString = "Hello World";
}

在 T4 模板文件中,我想出于条件目的调用该静态变量为了生成 SomeClass2。我以为会是这样的:

<# SomeClass.MyString #>

我尝试了多种方法,但似乎没有任何效果。我收到错误SomeClass.MyString不存在。如何做到这一点?

从另一个类获取静态值

正如 Daniel 所发现的那样,您可能正在尝试从 T4 模板中自引用您从未构建过的同一项目,因此 SomeClass 在(不存在?)程序集中不存在(如果您引用它)

你可以

注释掉你的 T4 代码然后构建项目,然后你可以引用它

或者将您的"助手"放在不同的项目/程序集中,您可以使用"T4 汇编指令"从 T4 项目中引用该项目/程序集

或者将您的助手放入 T4 模板中

public static class FooOrBar
{
public static string What { get { return  " <#= MyHelpers.GetString(true) #> "; } }
}
<#+
public static class MyHelpers {
    public static string GetString(bool what)
    {
        return what ? "foo" : "bar";
    }
}
#>