install-package microsoft.extensions.dependencyinjection;
using System.Diagnostics;
using System.Runtime.CompilerServices;
using Microsoft.Extensions.DependencyInjection;
namespace ConsoleApp8
{
internal class Program
{
static void Main(string[] args)
{
DIDemo();
}
static void DIDemo()
{
var services=new ServiceCollection();
services.AddSingleton<IMyService, MyService>();
//services.AddSingleton<IMyService, MySecondService>();
var provider= services.BuildServiceProvider();
var myService=provider.GetRequiredService<IMyService>();
myService.DoWork();
myService.DoJob();
}
}
public interface IMyService
{
void DoWork([CallerMemberName] string methodName = "", [CallerLineNumber] int lineNumber = 0, [CallerFilePath] string filePath="");
void DoJob();
}
public class MyService : IMyService
{
public void DoJob()
{
var stkTrace = new StackTrace(true);
var frame=stkTrace.GetFrame(0);
var method = frame?.GetMethod();
var line=frame?.GetFileLineNumber();
var file=frame?.GetFileName();
Console.WriteLine($"Method:{method.Name},Line:{line},File:{file}");
}
public void DoWork([CallerMemberName] string methodName = "", [CallerLineNumber] int lineNumber = 0, [CallerFilePath] string filePath = "")
{
Console.WriteLine($"In {methodName},line number:{lineNumber},filePath:{filePath}\nNow is {DateTime.Now.ToString()}");
}
}
public class MySecondService : IMyService
{
public void DoJob()
{
Console.WriteLine($"In DoJob,now is {DateTime.Now}");
}
public void DoWork([CallerMemberName] string methodName = "", [CallerLineNumber] int lineNumber = 0, [CallerFilePath] string filePath = "")
{
Console.WriteLine($"In methodName,now is {DateTime.Now}");
}
}
}
![]()