Skip to content

Commit

Permalink
init
Browse files Browse the repository at this point in the history
  • Loading branch information
my6521 committed Oct 11, 2021
1 parent c99ad6d commit e7f7878
Show file tree
Hide file tree
Showing 15 changed files with 275 additions and 0 deletions.
33 changes: 33 additions & 0 deletions .github/workflows/dotnet.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
name: .NET

on:
push:
tags:
- 'v*'

jobs:
build:

runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v2
- name: 建立.netcore环境
uses: actions/setup-dotnet@v1
with:
dotnet-version: 3.1.403
- name: 安装依赖
run: dotnet restore
- name: 构建
run: dotnet build --configuration Release --no-restore
- name: 添加github仓库
run: |
nuget sources add -name github -Source https://nuget.pkg.github.com/my6521/index.json -Username my6521 -Password ${{ secrets.GITHUBTOKEN }}
- name: 安装nuget
uses: nuget/setup-nuget@v1
with:
nuget-version: '5.x'
- name: 发布生成包到github和nuget
run: |
nuget push ./src/WWB.DI/bin/Release/*.nupkg -Source https://api.nuget.org/v3/index.json -SkipDuplicate -ApiKey ${{ secrets.NUGETKEY }} -NoSymbols
nuget push ./src/WWB.DI/bin/Release/*.nupkg -Source github -SkipDuplicate
8 changes: 8 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
################################################################################
# 此 .gitignore 文件已由 Microsoft(R) Visual Studio 自动创建。
################################################################################

.vs
obj/
bin/

42 changes: 42 additions & 0 deletions WWB.DI.sln
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 17
VisualStudioVersion = 17.0.31717.71
MinimumVisualStudioVersion = 10.0.40219.1
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{33685618-180F-4462-851A-A5B144750EFF}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WWB.DI", "src\WWB.DI\WWB.DI.csproj", "{D49F2395-6A85-4CA9-889F-404B7064ED96}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WWB.DI.Tests", "src\WWB.DI.Tests\WWB.DI.Tests.csproj", "{72144FE4-8DA0-49F4-9D08-C101384FC900}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "build", "build", "{90C13733-C7E7-491F-805C-1ADE277FC945}"
ProjectSection(SolutionItems) = preProject
.github\workflows\dotnet.yml = .github\workflows\dotnet.yml
EndProjectSection
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{D49F2395-6A85-4CA9-889F-404B7064ED96}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{D49F2395-6A85-4CA9-889F-404B7064ED96}.Debug|Any CPU.Build.0 = Debug|Any CPU
{D49F2395-6A85-4CA9-889F-404B7064ED96}.Release|Any CPU.ActiveCfg = Release|Any CPU
{D49F2395-6A85-4CA9-889F-404B7064ED96}.Release|Any CPU.Build.0 = Release|Any CPU
{72144FE4-8DA0-49F4-9D08-C101384FC900}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{72144FE4-8DA0-49F4-9D08-C101384FC900}.Debug|Any CPU.Build.0 = Debug|Any CPU
{72144FE4-8DA0-49F4-9D08-C101384FC900}.Release|Any CPU.ActiveCfg = Release|Any CPU
{72144FE4-8DA0-49F4-9D08-C101384FC900}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(NestedProjects) = preSolution
{D49F2395-6A85-4CA9-889F-404B7064ED96} = {33685618-180F-4462-851A-A5B144750EFF}
{72144FE4-8DA0-49F4-9D08-C101384FC900} = {33685618-180F-4462-851A-A5B144750EFF}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {4E432B43-34A8-421A-BF96-543995000EAE}
EndGlobalSection
EndGlobal
11 changes: 11 additions & 0 deletions src/WWB.DI.Tests.Service/WWB.DI.Tests.Service.csproj
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<TargetFramework>netcoreapp3.1</TargetFramework>
</PropertyGroup>

<ItemGroup>
<ProjectReference Include="..\WWB.DI\WWB.DI.csproj" />
</ItemGroup>

</Project>
23 changes: 23 additions & 0 deletions src/WWB.DI.Tests/TestService.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
using System;
using WWB.DI.Dependencies;

namespace WWB.DI.Tests.Service
{
public interface IServiceAA
{
void Say();
}

public interface IServiceA : IServiceAA
{
void Say();
}

public class ServiceA : IServiceA, IScopedWithInterfaces
{
public void Say()
{
Console.WriteLine("Hello");
}
}
}
22 changes: 22 additions & 0 deletions src/WWB.DI.Tests/UnitTest1.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
using Microsoft.Extensions.DependencyInjection;
using WWB.DI.Tests.Service;
using Xunit;

namespace WWB.DI.Tests
{
public class UnitTest1
{
[Fact]
public void Test1()
{
var collection = new ServiceCollection();
collection.AddServicesFromAllAssembly();

var serviceProvider = collection.BuildServiceProvider();
var serviceA = serviceProvider.GetService<IServiceA>();
var serviceAA = serviceProvider.GetService<IServiceAA>();
serviceA.Say();
serviceAA.Say();
}
}
}
27 changes: 27 additions & 0 deletions src/WWB.DI.Tests/WWB.DI.Tests.csproj
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<TargetFramework>netcoreapp3.1</TargetFramework>

<IsPackable>false</IsPackable>
</PropertyGroup>

<ItemGroup>
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="5.0.2" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.9.4" />
<PackageReference Include="xunit" Version="2.4.1" />
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.3">
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
<PrivateAssets>all</PrivateAssets>
</PackageReference>
<PackageReference Include="coverlet.collector" Version="3.0.2">
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
<PrivateAssets>all</PrivateAssets>
</PackageReference>
</ItemGroup>

<ItemGroup>
<ProjectReference Include="..\WWB.DI\WWB.DI.csproj" />
</ItemGroup>

</Project>
7 changes: 7 additions & 0 deletions src/WWB.DI/Dependencies/IScopedOnlySelf.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
namespace WWB.DI.Dependencies
{
public interface IScopedOnlySelf
{

}
}
7 changes: 7 additions & 0 deletions src/WWB.DI/Dependencies/IScopedWithInterfaces.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
namespace WWB.DI.Dependencies
{
public interface IScopedWithInterfaces
{

}
}
7 changes: 7 additions & 0 deletions src/WWB.DI/Dependencies/ISingletonOnlySelf.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
namespace WWB.DI.Dependencies
{
public interface ISingletonOnlySelf
{

}
}
7 changes: 7 additions & 0 deletions src/WWB.DI/Dependencies/ISingletonWithInterfaces.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
namespace WWB.DI.Dependencies
{
public interface ISingletonWithInterfaces
{

}
}
7 changes: 7 additions & 0 deletions src/WWB.DI/Dependencies/ITransientOnlySelf.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
namespace WWB.DI.Dependencies
{
public interface ITransientOnlySelf
{

}
}
7 changes: 7 additions & 0 deletions src/WWB.DI/Dependencies/ITransientWithInterfaces.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
namespace WWB.DI.Dependencies
{
public interface ITransientWithInterfaces
{

}
}
49 changes: 49 additions & 0 deletions src/WWB.DI/Extensions.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
using Microsoft.Extensions.DependencyInjection;
using System.Linq;
using WWB.DI.Dependencies;

namespace WWB.DI
{
public static class Extensions
{
public static IServiceCollection AddServicesFromAllAssembly(this IServiceCollection services)
{
string[] filters =
{
"mscorlib",
"netstandard",
"dotnet",
"api-ms-win-core",
"runtime.",
"System",
"Microsoft",
"Window",
};

return services.Scan(scan =>
{
scan
.FromApplicationDependencies(assembly => !filters.Any(x => assembly.FullName.StartsWith(x)))
.AddClasses(classes => classes.AssignableTo<IScopedWithInterfaces>())
.AsImplementedInterfaces()
.WithScopedLifetime()
.AddClasses(classes => classes.AssignableTo<ITransientWithInterfaces>())
.AsSelfWithInterfaces()
.WithTransientLifetime()
.AddClasses(classes => classes.AssignableTo<ISingletonWithInterfaces>())
.AsSelfWithInterfaces()
.WithSingletonLifetime()
.AddClasses(classes => classes.AssignableTo<IScopedOnlySelf>())
.AsSelf()
.WithScopedLifetime()
.AddClasses(classes => classes.AssignableTo<ITransientOnlySelf>())
.AsSelf()
.WithTransientLifetime()
.AddClasses(classes => classes.AssignableTo<ISingletonOnlySelf>())
.AsSelf()
.WithSingletonLifetime();
});
}

}
}
18 changes: 18 additions & 0 deletions src/WWB.DI/WWB.DI.csproj
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<TargetFramework>netcoreapp3.1</TargetFramework>
<PackageId>WWB.DI</PackageId>
<Version>1.0.0</Version>
<Authors>my6521</Authors>
<Description>NetCore3.1 批量依赖注入。</Description>
<PackageLicenseExpression>MIT</PackageLicenseExpression>
<RepositoryUrl>https://github.com/my6521/WWB.DI</RepositoryUrl>
<GeneratePackageOnBuild>True</GeneratePackageOnBuild>
</PropertyGroup>

<ItemGroup>
<PackageReference Include="Scrutor" Version="3.3.0" />
</ItemGroup>

</Project>

0 comments on commit e7f7878

Please sign in to comment.