TakasakiStudio.Lina.Common
2.4.0
See the version list below for details.
dotnet add package TakasakiStudio.Lina.Common --version 2.4.0
NuGet\Install-Package TakasakiStudio.Lina.Common -Version 2.4.0
<PackageReference Include="TakasakiStudio.Lina.Common" Version="2.4.0" />
<PackageVersion Include="TakasakiStudio.Lina.Common" Version="2.4.0" />
<PackageReference Include="TakasakiStudio.Lina.Common" />
paket add TakasakiStudio.Lina.Common --version 2.4.0
#r "nuget: TakasakiStudio.Lina.Common, 2.4.0"
#:package TakasakiStudio.Lina.Common@2.4.0
#addin nuget:?package=TakasakiStudio.Lina.Common&version=2.4.0
#tool nuget:?package=TakasakiStudio.Lina.Common&version=2.4.0
Lina
A framework to simplify application creation by improving dependency injection, validation, config and database handling
Features
- Config
- Easy load
- Auto inject
- Database
- Auto inject
- Auto import configuration
- Easy configuration
- Validation
- Fluent api
- Reliable library
- Easy usage
- CPF and CNPJ validators
- Dependency Injection
- Life time configurable
- Easy manipulation
- Services, Repositories, HttpClient and more types of preconfigured dependencies
- Asp Net Core
- Blazor render component in controller
- Clear hosted lifecycle
- File version provider
Example simple usage
using Config.Net;
using TakasakiStudio.Lina.AutoDependencyInjection;
using TakasakiStudio.Lina.AutoDependencyInjection.Attributes;
using TakasakiStudio.Lina.Utils.LoaderConfig;
using Microsoft.Extensions.DependencyInjection;
var serviceCollection = new ServiceCollection();
serviceCollection.AddLoaderConfig<IAppConfig>();
serviceCollection.AddAutoDependencyInjection<Program>();
var services = serviceCollection.BuildServiceProvider();
services.GetRequiredService<IFooService>().PrintAppName();
public interface IFooService
{
public void PrintAppName();
}
[Service<IFooService>]
public class FooService : IFooService
{
private readonly IAppConfig _appConfig;
public FooService(IAppConfig appConfig)
{
_appConfig = appConfig;
}
public void PrintAppName()
{
Console.WriteLine(_appConfig.AppName);
}
}
public interface IAppConfig
{
[Option(DefaultValue = "Test")]
public string AppName { get; }
}
Config example usage
using Config.Net;
using TakasakiStudio.Lina.Utils.LoaderConfig;
using Microsoft.Extensions.DependencyInjection;
var serviceCollection = new ServiceCollection();
var config = serviceCollection.AddLoaderConfig<IAppConfig>();
Console.WriteLine(config.AppName); // instant use
var services = serviceCollection.BuildServiceProvider();
Console.WriteLine(services.GetRequiredService<IAppConfig>().AppName); // DI usage
public interface IAppConfig
{
[Option(DefaultValue = "Test")]
public string AppName { get; }
}
Database example usage
using Config.Net;
using TakasakiStudio.Lina.Database;
using TakasakiStudio.Lina.Database.Models;
using TakasakiStudio.Lina.Utils.LoaderConfig;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata.Builders;
using Microsoft.Extensions.DependencyInjection;
var serviceCollection = new ServiceCollection();
var config = serviceCollection.AddLoaderConfig<IAppConfig>();
serviceCollection.AddLinaDbContext<Program>((builder, assembly) =>
builder.UseMySql(config.DatabaseUrl, ServerVersion.AutoDetect(config.DatabaseUrl),
optionsBuilder => optionsBuilder.MigrationsAssembly(assembly)));
public interface IAppConfig
{
[Option(DefaultValue = "Server=localhost;Database=test;User Id=root;Password=root;")]
public string DatabaseUrl { get; }
}
public class User : BaseEntity<int>
{
public string Name { get; set; } = string.Empty;
}
public class UserConfiguration : IEntityTypeConfiguration<User>
{
public void Configure(EntityTypeBuilder<User> builder)
{
builder.ToTable("Users");
builder.HasKey(x => x.Id);
builder.Property(x => x.Name).IsRequired();
}
}
Validation example usage
using FluentValidation;
using TakasakiStudio.Lina.Common;
using TakasakiStudio.Lina.Common.Extensions;
using TakasakiStudio.Lina.Database.Models;
var user = new User()
{
Name = "",
Cpf = "",
Cnpj = "",
};
if (!await user.IsValid())
{
Console.WriteLine("invalid");
}
user.Name = "Foo";
user.Cpf = "349.306.930-80";
user.Cnpj = "82.099.001/0001-08";
await user.Validate();
Console.WriteLine("Valid");
public class User : BaseValidated<User>
{
public required string Name { get; set; }
public required string Cpf { get; set; }
public required string Cnpj { get; set; }
protected override void SetupValidator(LinaAbstractValidator<User> rules)
{
rules.RuleFor(x => x.Name).NotEmpty();
rules.RuleFor(x => x.Cpf).ValidCpf();
rules.RuleFor(x => x.Cnpj).ValidCnpj();
}
}
Dependency injection example usage
using Config.Net;
using FluentValidation;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata.Builders;
using Microsoft.Extensions.DependencyInjection;
using TakasakiStudio.Lina.AutoDependencyInjection;
using TakasakiStudio.Lina.AutoDependencyInjection.Attributes;
using TakasakiStudio.Lina.Common;
using TakasakiStudio.Lina.Database;
using TakasakiStudio.Lina.Database.Interfaces;
using TakasakiStudio.Lina.Database.Models;
using TakasakiStudio.Lina.Database.Repositories;
using TakasakiStudio.Lina.Utils.LoaderConfig;
var serviceCollection = new ServiceCollection();
var config = serviceCollection.AddLoaderConfig<IAppConfig>();
serviceCollection.AddAutoDependencyInjection<Program>();
serviceCollection.AddLinaDbContext<Program>((builder, assembly) =>
builder.UseMySql(config.DatabaseUrl, ServerVersion.AutoDetect(config.DatabaseUrl),
optionsBuilder => optionsBuilder.MigrationsAssembly(assembly)));
public interface IAppConfig
{
[Option(DefaultValue = "Server=localhost;Database=test;User Id=root;Password=root;")]
public string DatabaseUrl { get; }
}
public class User : BaseValidatedEntity<User, int>
{
public string Name { get; set; } = string.Empty;
protected override void SetupValidator(LinaAbstractValidator<ExampleModel> rules)
{
rules.RuleFor(x => x.Name).NotEmpty();
}
public static implicit operator User(UserViewModel viewModel)
{
return new User
{
Name = viewModel.Name
};
}
public static implicit operator UserViewModel(User user)
{
return new UserViewModel
{
Name = user.Name
};
}
}
public class UserConfiguration : IEntityTypeConfiguration<User>
{
public void Configure(EntityTypeBuilder<User> builder)
{
builder.ToTable("Users");
builder.HasKey(x => x.Id);
builder.Property(x => x.Name).IsRequired();
}
}
public record UserViewModel
{
public string Name { get; set; } = string.Empty;
}
public interface IUserRepository : IBaseRepository<User, int>
{
}
[Repository<IUserRepository>]
public class UserRepository : BaseRepository<User, int>, IUserRepository
{
public UserRepository(DbContext dbContext) : base(dbContext)
{
}
}
public interface IUserService
{
}
[Service<IUserService>]
public class UserService : IUserService
{
private readonly IUserRepository _userRepository;
public UserService(IUserRepository userRepository)
{
_userRepository = userRepository;
}
public async Task<UserViewModel?> Add(UserViewModel userViewModel)
{
User user = userViewModel;
await user.Validate();
await _userRepository.Add(user);
await _userRepository.Commit();
return user;
}
}
Blazor components
using Microsoft.AspNetCore.Mvc;
using TakasakiStudio.Lina.AspNet.Controllers;
[Controller]
public class AuthController() : PageController
{
[HttpGet]
public IActionResult Login()
{
return RenderComponent<LoginPage>(); // LoginPage is a Blazor component
}
}
Clear hosted lifecycle
using TakasakiStudio.Lina.AspNet.Workers;
public class MyWorker : AbstractHostedLifecycleService
{
public override Task StartingAsync(CancellationToken cancellationToken)
{
/*...*/
}
}
Libraries usage
License
The entire project, except for the file FileVersionProvider.cs is licensed under the The Unlicense license. The file FileVersionProvider.cs was copied from Asp.NET Core under the MIT License.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net8.0
- FluentValidation (>= 11.11.0)
NuGet packages (2)
Showing the top 2 NuGet packages that depend on TakasakiStudio.Lina.Common:
| Package | Downloads |
|---|---|
|
TakasakiStudio.Lina.Database
A library to facilitate the creation of models and repositories using EntityFramework. |
|
|
TakasakiStudio.Lina
A framework to simplify application creation by improving dependency injection, validation, config and database handling |
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 2.4.2 | 437 | 4/27/2025 |
| 2.4.1 | 124 | 4/26/2025 |
| 2.4.0 | 325 | 4/21/2025 |
| 2.3.7 | 235 | 3/14/2025 |
| 2.3.6 | 158 | 3/14/2025 |
| 2.3.5 | 261 | 2/24/2025 |
| 2.3.4 | 101 | 2/24/2025 |
| 2.3.3 | 362 | 2/16/2025 |
| 2.3.2 | 131 | 2/16/2025 |
| 2.3.1 | 141 | 2/15/2025 |
| 2.3.0 | 174 | 11/18/2024 |
| 2.2.1 | 1,107 | 10/17/2024 |
| 2.2.0 | 333 | 10/9/2024 |
| 2.1.7 | 150 | 10/2/2024 |
| 2.1.6 | 512 | 8/30/2024 |
| 2.1.5 | 330 | 7/19/2024 |
| 2.1.4 | 156 | 6/27/2024 |
| 2.1.3 | 160 | 6/5/2024 |
| 2.1.2 | 238 | 5/15/2024 |
| 2.1.1 | 154 | 5/13/2024 |
| 2.0.13 | 132 | 5/13/2024 |
| 2.0.12 | 198 | 5/5/2024 |
| 2.0.11 | 146 | 5/5/2024 |
| 2.0.10 | 162 | 4/13/2024 |
| 2.0.9 | 194 | 3/31/2024 |
| 2.0.8 | 174 | 3/18/2024 |
| 2.0.7 | 164 | 3/17/2024 |
| 2.0.6 | 426 | 2/22/2024 |
| 2.0.5 | 207 | 2/14/2024 |
| 2.0.4 | 177 | 2/7/2024 |
| 2.0.3 | 225 | 1/21/2024 |
| 2.0.2 | 295 | 11/28/2023 |
| 2.0.1 | 178 | 11/23/2023 |
| 2.0.0 | 176 | 11/22/2023 |