-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
15 changed files
with
275 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,8 @@ | ||
################################################################################ | ||
# 此 .gitignore 文件已由 Microsoft(R) Visual Studio 自动创建。 | ||
################################################################################ | ||
|
||
.vs | ||
obj/ | ||
bin/ | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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"); | ||
} | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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(); | ||
} | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
namespace WWB.DI.Dependencies | ||
{ | ||
public interface IScopedOnlySelf | ||
{ | ||
|
||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
namespace WWB.DI.Dependencies | ||
{ | ||
public interface IScopedWithInterfaces | ||
{ | ||
|
||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
namespace WWB.DI.Dependencies | ||
{ | ||
public interface ISingletonOnlySelf | ||
{ | ||
|
||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
namespace WWB.DI.Dependencies | ||
{ | ||
public interface ISingletonWithInterfaces | ||
{ | ||
|
||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
namespace WWB.DI.Dependencies | ||
{ | ||
public interface ITransientOnlySelf | ||
{ | ||
|
||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
namespace WWB.DI.Dependencies | ||
{ | ||
public interface ITransientWithInterfaces | ||
{ | ||
|
||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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(); | ||
}); | ||
} | ||
|
||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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> |