Hoja de referencia
Fragmentos rápidos de las tareas más frecuentes en Crono. Cada bloque enlaza a su sección para el detalle.
Registrar servicios (Iniciador)
internal class Iniciador : IniciadorBase
{
public override void ConfigurarServicios(IServiceCollection servicios, IAplicacionContexto app) { }
public override void ConfigurarContenedor(ContainerBuilder c, IAplicacionContexto app)
{
c.RegisterType<MiServicio>().As<IMiServicio>().InstancePerLifetimeScope();
}
}
Ver Iniciador.
Servicios comunes por constructor
public class MiServicio
{
private readonly IComunServicios _servicios;
public MiServicio(IComunServicios servicios) => _servicios = servicios;
// _servicios.DbContexto, .TrabajoContexto, .OrganizacionContexto, .Cache, .EventoPublicador, .Localizacion ...
}
Publicar y consumir eventos
await _eventoPublicador.PublicarAsync(new PrestamoAprobadoEvento(prestamoId));
public class MiConsumidor : IConsumidor
{
public async Task ManejarAsync(PrestamoAprobadoEvento e, CancellationToken ct) { /* ... */ }
}
Ver Eventos.
Entidad + migración
public class Notificacion : EntidadBase { public string Mensaje { get; set; } }
[MigracionVersion("2026-07-31 10:00:00", "NotificacionInicial")]
internal class NotificacionInicial : Migration
{
public override void Up()
{
if (!Schema.Table(nameof(Notificacion)).Exists())
Create.Table(nameof(Notificacion))
.WithIdColumn()
.WithColumn(nameof(Notificacion.Mensaje)).AsMaxString().Nullable();
}
public override void Down() { }
}
Ver Dominio y Migraciones.
Permisos
internal static class MiModuloPermisos
{
public const string _ = "mimodulo";
public const string Ver = "mimodulo.ver";
}
[Permiso(MiModuloPermisos.Ver)]
public IActionResult Index() => View();
Ver Seguridad.
Tarea programada
public class MiTarea : ITarea
{
public async Task Ejecutar(TareaEjecucionContexto ctx, CancellationToken ct)
{
await ctx.EstablecerProgresoAsync(50, 100, "Procesando...");
}
}
Atributos genéricos
entidad.AtributosGenericos.Establecer("MiClave", valor);
await entidad.AtributosGenericos.GuardarCambiosAsync();
var v = entidad.AtributosGenericos.Obtener<string>("MiClave");
Ver Atributos genéricos.
Endpoint de API
[WebApiGrupo(WebApiGrupoNombres.Prestamo)]
[ApiVersion("1")]
[Route("api/v{version:apiVersion}/mi-recurso")]
public class MiRecursoController : CronoApiController
{
[HttpGet, MapToApiVersion("1")]
[ProducesResponseType(typeof(MiDto), Status200OK)]
[Permiso(MiModuloPermisos.Ver)]
public Task<IActionResult> Obtener(CancellationToken ct) { /* ... */ }
}
Tag helpers habituales
<barrapestanias id="x"><pestania cr-titulo="General" cr-seleccionado="true">...</pestania></barrapestanias>
<zona nombre="mi_zona"></zona>
<microaplicacion zona-destino="mi_zona">...</microaplicacion>
<div cr-si="Model.Visible">...</div>
Ver Tag Helpers.