[Custom Page] Como criar uma Classe em C# no Custom Page?

#CustomPage

IMPORTANTE: a class não pode ser instanciada diretamente, ex: new MyClass() utilize CreateInstanceMyClass() que é gerado automaticamente

IMPORTANTE: a class não pode ter construtor definido

Como definir e instanciar uma classe C# ?

Importante: para toda classe criada no agilityflow, o sistema gera automaticamente um metodo de criação da instancia dessa classe com o nome CreateInstanceXXXXX onde o XXXX é o nome da classe, se for uma classe chamada Document, ele cria Document CreateInstanceDocument(),  sempre sem parametros de entrada

//crie uma classe
public class Document{
    public string Title {get;set;}
    public string Description {get;set;}



    public async Task<List<UserClass>> ListUserExamplesAsync(){
        var userNames = new List<UserClass>();

        var dt = await CustomPageContext.GetDataTableAsync("select coalesce(usu_nome,'') as name from tbl_usuario where deletado = false limit 5");

        for(var i = 0; i < dt.Rows.Count; i++){

           //repare que pra criar a instancia da classe UserClass, eu utilizo o metodo CreateInstance
            var userClass = CreateInstance<UserClass>();
            userClass.Name = dt.Rows[i]["name"].ToString();
            userNames.Add(userClass);
        }

        return userNames;
    }
}

public class UserClass{
    public string Name {get;set;}
}

//caso queira, crie um metodo para fazer a instancia dessa classe
public Document CreateDocument_01(string title, string description ){

    var doc = CreateInstance<Document>();
    doc.Title = title; 
    doc.Description = description;

     return doc;
}

Como instanciar uma classe do Custom Page entre outras classes do Custom Page?

Suponahmos que você tenha uma classe chamada OutraClasseNoCustomPage no Custom Page

public class OutraClasseNoCustomPage{

  public string Nome {get;set;}

}

Para instanciar essa classe OutraClasseNoCustomPage dentro do pŕoprio Custom Page você tem as opções abaixo:

CreateInstance<T>()
public class MinhaClasseCustomPage{

  public void Metodo()[

    var classe2 = CreateInstance<OutraClasseNoCustomPage>();
    
  }

}

Como usar no CShtml a Classe C# criada? 

CreateInstanceXXXXX()

Importante: para toda classe criada no agilityflow, o sistema gera automaticamente um metodo de criação da instancia dessa classe com o nome CreateInstanceXXXXX onde o XXXX é o nome da classe, se for uma classe chamada Document, ele cria Document CreateInstanceDocument()

@{       
        //instanciando uma class q foi declarada dentro do CustomPage dinamicamente
        var documentClass01 = CustomPageClass.CreateInstanceDocument();

        var json = JsonConvert.SerializeObject( new { documentClass01 }); 

}
@json
Opção 02:  Chamando o metodo nativo do agiltyflow para instanciar classes:
@{       
        //instanciando uma class q foi declarada dentro do CustomPage dinamicamente
        var documentClass02 = CustomPageClass.CreateInstance("Document"); 

        var json = JsonConvert.SerializeObject( new { documentClass02 }); 

}
@json
Opção 03:  Caso você crie um metodo manualmente que intancie a classe, exemplo o metodo criado no exemplo anterior  CreateDocument_01 (que você mesmo criou) :

O método CreateDocument_01 você que precisaria criar (exemplo criado acima)

@{       
        //instanciando uma class q foi declarada dentro do CustomPage dinamicamente
        var documentClass01 = CustomPageClass.CreateDocument_01("string title", "string description");

        var json = JsonConvert.SerializeObject( new { documentClass01 }); 

}
@json

Regras e Limitações:


Revision #11
Created 5 March 2025 16:44:07 by agilityflow
Updated 3 September 2025 16:49:42 by agilityflow