NVelocity sintaxis para llamar a los métodos con parámetros evaluados
Pregunta
Tengo una bastante simple plantilla que necesito hacer una llamada a un método de.Sin embargo, NVelocity no parece para evaluar los parámetros del método, que en sí son NVelocity variables.Tome las siguientes NVelocity plantilla:
#if (--- CONDITION SNIPPED ---)
<blockquote class="column span-4">
I MADE IT!
</blockquote>
#else
<blockquote class="column span-4">
$extensionMethods.TestMethod(${var1})
</blockquote>
#end
En la plantilla anterior, $extensionMethods
se pasa como una instancia de una clase y funciona de maravilla cuando pasan evaluado números (por ejemplo, $extensionMethods.TestMethod(4)
funciona todo el tiempo).Sin embargo, el uso de $var1
causas de la totalidad de la cadena que se devuelve como es: $extensionMethods.TestMethod(${var1})
.
Es allí una manera de pasar una variable a un método perezosamente para obtener la plantilla anterior para evaluar correctamente?
Solución
Si usted está teniendo problemas, es probable que sea algo que ver con sus tipos de variables, o el método de la disponibilidad.He construido y probado el siguiente:
public class TestClass
{
#region Methods
public string DoSomething(string name)
{
return name.ToUpperInvariant();
}
public string DoSomethingElse(int age)
{
return (age*10).ToString();
}
#endregion
}
Y mi plantilla:
#set($myVar = "matt")
#set($myVar2 = 10)
Name: $test.DoSomething(${myVar})
Age: $test.DoSomethingElse(${myVar2})
Y el resultado:
Name: "MATT"
Age: 100
Podemos ver algo de código para los métodos de extensión?