TakasakiStudio.Lina.AutoDependencyInjection
3.0.0
dotnet add package TakasakiStudio.Lina.AutoDependencyInjection --version 3.0.0
NuGet\Install-Package TakasakiStudio.Lina.AutoDependencyInjection -Version 3.0.0
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="TakasakiStudio.Lina.AutoDependencyInjection" Version="3.0.0" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="TakasakiStudio.Lina.AutoDependencyInjection" Version="3.0.0" />
<PackageReference Include="TakasakiStudio.Lina.AutoDependencyInjection" />
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add TakasakiStudio.Lina.AutoDependencyInjection --version 3.0.0
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: TakasakiStudio.Lina.AutoDependencyInjection, 3.0.0"
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package TakasakiStudio.Lina.AutoDependencyInjection@3.0.0
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=TakasakiStudio.Lina.AutoDependencyInjection&version=3.0.0
#tool nuget:?package=TakasakiStudio.Lina.AutoDependencyInjection&version=3.0.0
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
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 | net10.0 is compatible. 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. |
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
-
net10.0
- Microsoft.Extensions.DependencyInjection (>= 10.0.0)
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 10.0.0)
- Microsoft.Extensions.Http (>= 10.0.0)
NuGet packages (1)
Showing the top 1 NuGet packages that depend on TakasakiStudio.Lina.AutoDependencyInjection:
| Package | Downloads |
|---|---|
|
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 |
|---|---|---|
| 3.0.0 | 271 | 11/13/2025 |
| 2.4.2 | 498 | 4/27/2025 |
| 2.4.1 | 133 | 4/26/2025 |
| 2.4.0 | 369 | 4/21/2025 |
| 2.3.7 | 266 | 3/14/2025 |
| 2.3.6 | 206 | 3/14/2025 |
| 2.3.5 | 369 | 2/24/2025 |
| 2.3.3 | 414 | 2/16/2025 |
| 2.3.2 | 176 | 2/16/2025 |
| 2.3.1 | 178 | 2/15/2025 |
| 2.3.0 | 214 | 11/18/2024 |
| 2.2.1 | 1,139 | 10/17/2024 |
| 2.2.0 | 365 | 10/9/2024 |
| 2.1.7 | 194 | 10/2/2024 |
| 2.1.6 | 648 | 8/30/2024 |
| 2.1.5 | 368 | 7/19/2024 |
| 2.1.4 | 196 | 6/27/2024 |
| 2.1.3 | 191 | 6/5/2024 |
| 2.1.2 | 272 | 5/15/2024 |
| 2.1.1 | 195 | 5/13/2024 |
| 2.0.13 | 164 | 5/13/2024 |
| 2.0.12 | 213 | 5/5/2024 |
| 2.0.11 | 191 | 5/5/2024 |
| 2.0.10 | 207 | 4/13/2024 |
| 2.0.9 | 237 | 3/31/2024 |
| 2.0.8 | 205 | 3/18/2024 |
| 2.0.7 | 210 | 3/17/2024 |
| 2.0.6 | 472 | 2/22/2024 |
| 2.0.5 | 254 | 2/14/2024 |
| 2.0.4 | 203 | 2/7/2024 |
| 2.0.3 | 276 | 1/21/2024 |
| 2.0.2 | 328 | 11/28/2023 |
| 2.0.1 | 197 | 11/23/2023 |
| 2.0.0 | 198 | 11/22/2023 |