Métodos de extensão

I‑Código da entidade Person no back‑end (C#)

public class Person
{
    private string name;
    public string Name
    {
        get { return name; }
        set { name = value; }
    }
    private int age;
    public int Age
    {
        get { return age; }
        set { age = value; }
    }

    //Construtor sem parâmetros
    public Person(){}
    //Construtor com parâmetros
    public Person(string name, int age)
    {
        this.name = name;
        this.age = age;
    }

    //Método de instância sem parâmetros
    public string getMyName()
    {
        return this.name;
    }

    //Método de instância com múltiplos parâmetros
    public string JoinStr(string str1, string str2)
    {
        return str1 + str2;
    }
}Code language: C# (cs)

Definir variáveis de objeto no código back‑end cs

Person pTest = new Person("Tom", 22);
context.Put("pTest", pTest);Code language: JavaScript (javascript)

II‑Código do modelo VTL & instruções de renderização

Chamada de método<br />
$pTest.getMyName();

#set($a = "hello")
#set($b = "foxdevelop")

$pTest.JoinStr($a, $b);Code language: PHP (php)
1. $pTest.getMyName()
  • Invoca o método sem parâmetros do objeto getMyName()
  • Retorna Tom

✅ No Velocity, ao chamar método sem parâmetros os parênteses () podem ser omitidos. $pTest.getMyName é equivalente a $pTest.getMyName()

2. $pTest.JoinStr($a, $b)
  • Chama o método que recebe dois parâmetros do tipo string
  • O VTL primeiro interpreta $a e $b, passando os valores reais "hello" e "foxdevelop"
  • Retorna o resultado da concatenação: hellofoxdevelop

Resumo

  1. Diferença entre maiúsculas e minúsculas no nome do método é obrigatória
    No C#, getMyName()GetMyName(); o modelo deve seguir exatamente a escrita do código.
  2. Passe variáveis diretamente nos parâmetros
    Não use aspas extras. $pTest.JoinStr($a,$b) está correto; evite escrever $pTest.JoinStr("$a","$b") (isso enviará o texto literal “$a”).
  3. Diferenciar propriedades de métodos
  • $pTest.Name → acessa uma propriedade (getter)
  • $pTest.getMyName() → invoca um método
  1. Valor de retorno é exibido automaticamente
    Ao escrever diretamente $objeto.metodo() no modelo, o Velocity imprime automaticamente o valor retornado. Se não quiser exibir o resultado, use #set para recebê‑lo:
#set($result = $pTest.JoinStr($a,$b))Code language: PHP (php)

III‑Saída renderizada da página final

Chamada de método
Tom;

hellofoxdevelop;

Métodos de extensão

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *