SourceInject 0.1.12

dotnet add package SourceInject --version 0.1.12                
NuGet\Install-Package SourceInject -Version 0.1.12                
此命令旨在在 Visual Studio 的包管理器控制台中使用,因为它使用 NuGet 模块的版本 Install-Package.
<PackageReference Include="SourceInject" Version="0.1.12" />                
对于支持 包引用 的项目,将此 XML 节复制到项目文件中以引用此包。
paket add SourceInject --version 0.1.12                
#r "nuget: SourceInject, 0.1.12"                
#r 指令可以在 F# 交互式环境和多语言笔记本中使用。将其复制到交互式工具或脚本的源代码中,以引用包。
// Install SourceInject as a Cake Addin
#addin nuget:?package=SourceInject&version=0.1.12

// Install SourceInject as a Cake Tool
#tool nuget:?package=SourceInject&version=0.1.12                

Source Inject

C# 的源生成器,使用 Roslyn(C# 编译器)允许您在编译时生成依赖注入。通过这样做,您可以避免使用反射,并且服务会自动注册。

NuGet version (sourceinject) Build License

如何使用它

安装它,并将一个属性添加到您要将它注入服务提供程序中的类中,如下所示

[Inject]
public class ExampleService
{
    private readonly AnotherService anotherService;

    public ExampleService(AnotherService anotherService) =>
        this.anotherService = anotherService;

    public string GetValue() => anotherService.Value;
}

[Inject(ServiceLifetime.Singleton)]
public class AnotherService
{
    public string Value => "Hello World!";
}

如上所示,您可以选择定义生命周期。默认生命周期是瞬时的。您还可以使用以下属性

  • InjectSingletonAttribute
  • InjectScopedAttribute
  • InjectTransientAttribute

最后一个与不传递任何参数使用 Inject 相同。

然后,您必须调用 Discover 方法,以便找到这些类并生成源。然后,您可以使用构造函数注入或服务定位器等要求它们,例如

var services = new ServiceCollection();
services.Discover();
var serviceProvider = services.BuildServiceProvider();
var exampleService = serviceProvider.GetRequiredService<ExampleService>();

您还可以在其他程序集中发现服务。要执行此操作,您必须调用方法 DiscoverIn<AssemblyName><AssemblyName>Discoverer.Discover(services)。如果您的程序集名包含点 .,它们将被下划线 _ 替换。

所有这些方法(Discover 等)和属性都将为您生成到项目中。

您可以使用 Visual Studio 看到生成的代码。请参阅 这里 的示例。

安装

该软件包可用(在NuGet上。要从命令行安装

dotnet add package sourceinject

或使用 Visual Studio 的包管理器。

贡献

开发的主要支持 IDE 是 Visual Studio 2019。

欢迎提问、评论、错误报告和拉取请求。包含重现步骤(包括代码)的错误报告更受欢迎。更好的是,以拉取请求的形式提交。在开始对现有问题进行工作之前,检查它是否尚未分配给任何其他人,如果已经分配,请与那个人交谈。

维护者和核心团队

贡献者可以在Github上的贡献者页面找到。

许可证

此软件为开源,许可协议为MIT许可证。有关详细信息,请参阅LICENSE。在贡献、分叉、复制或对代码执行任何操作之前,请查看许可证条款。如果您决定做出贡献,您同意将您所有贡献的版权授予本项目,并同意明确表示不接受这些条款。您的工作将与项目一起以MIT许可证授权,包括其余代码。

本包中不包含支持框架资产。

了解有关 目标框架.NET Standard 的更多信息。

本包没有依赖项。

NuGet 包

此包未由任何NuGet包使用。

GitHub 仓库

此包未由任何流行GitHub仓库使用。

版本 下载 最后更新
0.1.12 1,309 3/23/2022