2

我有一个相当简单的模板,我需要从中进行方法调用。但是, NVelocity 似乎没有评估本身是NVelocity 变量的方法参数。采用以下 NVelocity 模板:

#if (--- CONDITION SNIPPED ---)
    <blockquote class="column span-4">
          I MADE IT!
    </blockquote>
#else
    <blockquote class="column span-4">
         $extensionMethods.TestMethod(${var1})
</blockquote>       
#end

在上面的模板$extensionMethods中,作为一个类的实例传入,并且在传入评估的数字时效果很好(例如$extensionMethods.TestMethod(4)每次都有效)。但是, using$var1会导致整个字符串按原样返回:$extensionMethods.TestMethod(${var1}).

有没有办法将变量懒惰地传递给方法以使上述模板正确评估?

4

1 回答 1

3

如果您遇到问题,可能与您的变量类型或方法可用性有关。我已经构建并测试了以下内容:

public class TestClass
{
    #region Methods
    public string DoSomething(string name)
    {
        return name.ToUpperInvariant();
    }

    public string DoSomethingElse(int age)
    {
        return (age*10).ToString();
    }
    #endregion
}

还有我的模板:

#set($myVar = "matt")
#set($myVar2 = 10)

Name: $test.DoSomething(${myVar})
Age: $test.DoSomethingElse(${myVar2})

和输出:

Name: "MATT"
Age: 100

我们可以查看您的扩展方法的一些代码吗?

于 2010-07-15T08:52:29.687 回答