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" />                
对于支持PackageReference的项目,将此XML节点复制到项目文件中,以引用包。
paket add SourceInject --version 0.1.12                
#r "nuget: SourceInject, 0.1.12"                
#r指令可以在F# Interactive和Polyglot Notebooks中使用。将其复制到交互工具或脚本的源代码中,以引用包。
// 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标准的信息。

此软件包没有依赖项。

NuGet软件包

该软件包未被任何NuGet软件包使用。

GitHub仓库

该软件包未被任何流行的GitHub仓库使用。

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