sepearte files

This commit is contained in:
2020-08-31 20:41:09 +08:00
parent f601576d17
commit 3da545bf39
5 changed files with 73 additions and 39 deletions

26
src/IoC/IoC/Container.cs Normal file
View File

@@ -0,0 +1,26 @@
using Autofac;
using IoC.implement;
using IoC.inerface;
namespace IoC
{
public class Container
{
/// <summary>
/// 仲介公司
/// </summary>
/// <returns></returns>
public static IContainer MiddleCompany()
{
ContainerBuilder builder = new ContainerBuilder();
//在仲介公司裡寫需求人申請單
builder.RegisterType<MineWithMiddle>();
//小明所需打掃阿姨需求
builder.RegisterType<Aunt>().As<ISwapable>();
return builder.Build();
}
}
}

View File

@@ -37,7 +37,6 @@
<ItemGroup> <ItemGroup>
<Reference Include="Autofac, Version=4.6.2.0, Culture=neutral, PublicKeyToken=17863af14b0044da, processorArchitecture=MSIL"> <Reference Include="Autofac, Version=4.6.2.0, Culture=neutral, PublicKeyToken=17863af14b0044da, processorArchitecture=MSIL">
<HintPath>..\packages\Autofac.4.6.2\lib\net45\Autofac.dll</HintPath> <HintPath>..\packages\Autofac.4.6.2\lib\net45\Autofac.dll</HintPath>
<Private>True</Private>
</Reference> </Reference>
<Reference Include="System" /> <Reference Include="System" />
<Reference Include="System.Core" /> <Reference Include="System.Core" />
@@ -52,6 +51,9 @@
<Reference Include="System.Xml" /> <Reference Include="System.Xml" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<Compile Include="Container.cs" />
<Compile Include="implement\Aunt.cs" />
<Compile Include="inerface\ISwapable.cs" />
<Compile Include="Program.cs" /> <Compile Include="Program.cs" />
<Compile Include="Properties\AssemblyInfo.cs" /> <Compile Include="Properties\AssemblyInfo.cs" />
</ItemGroup> </ItemGroup>
@@ -59,6 +61,7 @@
<None Include="app.config" /> <None Include="app.config" />
<None Include="packages.config" /> <None Include="packages.config" />
</ItemGroup> </ItemGroup>
<ItemGroup />
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it. <!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets. Other similar extension points exist, see Microsoft.Common.targets.

View File

@@ -1,4 +1,6 @@
using Autofac; using Autofac;
using IoC.implement;
using IoC.inerface;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
@@ -7,6 +9,7 @@ using System.Text;
namespace IoC namespace IoC
{ {
/// <summary> /// <summary>
/// (沒有注入的)
/// 小明直接依賴 Aunt 不是依賴抽象 /// 小明直接依賴 Aunt 不是依賴抽象
/// 日後要改必須動內部 /// 日後要改必須動內部
/// </summary> /// </summary>
@@ -21,7 +24,7 @@ namespace IoC
} }
/// <summary> /// <summary>
/// 小明 /// 小明 ( 有注入的 )
/// </summary> /// </summary>
public class MineWithMiddle public class MineWithMiddle
{ {
@@ -43,35 +46,20 @@ namespace IoC
} }
/// <summary>
/// 依賴抽象[打掃動作的人]
/// </summary>
public class Aunt : ISwapable
{
public void Swapping()
{
Console.WriteLine("Aunt Swapping");
}
}
/// <summary>
/// 打掃動作
/// </summary>
public interface ISwapable
{
void Swapping();
}
class Program class Program
{ {
static void Main(string[] args) static void Main(string[] args)
{ {
// 沒有注入的
Mine mine = new Mine(); Mine mine = new Mine();
mine.Room(); mine.Room();
IContainer middleCompany = MiddleCompany(); //========================
// 有注入的
IContainer middleCompany = Container.MiddleCompany();
//仲介公司(IOC AutoFac)自動幫小明注入一個打掃阿姨 //仲介公司(IOC AutoFac)自動幫小明注入一個打掃阿姨
MineWithMiddle mineWithMiddle = middleCompany.Resolve<MineWithMiddle>(); MineWithMiddle mineWithMiddle = middleCompany.Resolve<MineWithMiddle>();
@@ -80,20 +68,5 @@ namespace IoC
Console.ReadKey(); Console.ReadKey();
} }
/// <summary>
/// 仲介公司
/// </summary>
/// <returns></returns>
private static IContainer MiddleCompany()
{
ContainerBuilder builder = new ContainerBuilder();
//在仲介公司裡寫需求人申請單
builder.RegisterType<MineWithMiddle>();
//小明所需打掃阿姨需求
builder.RegisterType<Aunt>().As<ISwapable>();
return builder.Build();
}
} }
} }

View File

@@ -0,0 +1,16 @@
using IoC.inerface;
using System;
namespace IoC.implement
{
/// <summary>
/// 依賴抽象[打掃動作的人]
/// </summary>
public class Aunt : ISwapable
{
public void Swapping()
{
Console.WriteLine("Aunt Swapping");
}
}
}

View File

@@ -0,0 +1,16 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace IoC.inerface
{
/// <summary>
/// 打掃動作
/// </summary>
public interface ISwapable
{
void Swapping();
}
}