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}");
        }
    }
}

 

 

 

 

posted @ 2025-05-23 15:53  FredGrit  阅读(7)  评论(0)    收藏  举报