NetCore DI
程序员文章站
2023-12-28 14:46:40
...
using System;
using Microsoft.Extensions.DependencyInjection;
namespace ConsoleApp6
{
class Program
{
static void Main(string[] args)
{
// 实例化DI框架
IServiceCollection services = new ServiceCollection();
// 在DI框架中加入接口的一个实例(它是单例的)
services.AddSingleton<IRun, Run>();
services.AddTransient<ITest, Test>();
services.AddTransient<IPCS,PCS>();
// 服务的提供者
IServiceProvider serviceProvider = services.BuildServiceProvider();
// 从服务提供者获取接口的实例(不用关心是如何创建的)
serviceProvider.GetService<IRun>().Run();
// serviceProvider.GetService<ITest>().Run();
serviceProvider.GetService<IPCS>().Run() ;
Console.ReadLine();
}
}
// 接口
interface IRun
{
void Run();
}
// 实现类
class Run : IRun
{
void IRun.Run()
{
Console.WriteLine("跑起来,兄弟");
}
}
class TT
{
string str;
public TT(string cmd)
{
str = cmd;
}
private void Run()
{
Console.WriteLine(str);
}
}
interface IPCS
{
void Run();
}
class PCS:IPCS
{
void IPCS.Run()
{
Console.WriteLine("PCS....");
}
}
interface ITest
{
void Run();
}
class Test : ITest
{
string name = "";
public Test(string tname)
{
name = tname;
}
void ITest.Run()
{
Console.WriteLine(name);
}
}
}