C# Microsoft.Extensions.DependecyInjection
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}"); } } }