.Net or .Net Core依赖注入实现Microsoft.Extensions.DependencyInjection

依赖注入的优点

(1)有效地设计服务及其依赖关系。

(2)防止多线程问题。

(3)防止内存泄漏。

(4)防止潜在的错误。

工程代码下载

.Netor.NetCore依赖注入实现-C#文档类资源-CSDN下载

一、新建控制台项目

新建StartUp类,代码如下,如果你们没有用到Logger删掉Logger相关内容即可

using FileLogger;

namespace UnityDataManageServiceHost
{
    class StartUp
    {
        public static void Main(string[] args)
        {
            //setup our DI
            var serviceProvider = new ServiceCollection()
                .AddSingleton<ILogger, Log4netLogger>()
               .BuildServiceProvider();
            //configure console logging
            serviceProvider
                .GetService<ILogger>().Initialize("UnityDataManageServiceHost");
            serviceProvider
                .GetService<ILogger>().LogLevel = LoggingEventType.Debug;
            //save log
            var _logger = serviceProvider.GetService<ILogger>();
            _logger.Debug(typeof(StartUp), "Starting application");
            //全部异常捕获,优雅退出
            try
            {
            }
            catch (Exception ex)
            {
                _logger.Debug(typeof(StartUp), "Main Exception" + " Exception=" + ex);
            }
            _logger.Debug(typeof(StartUp), "Stop application");
            System.Diagnostics.Process.GetCurrentProcess().Kill();
        }

        //入口函数
        public static void Start(ServiceProvider serviceProvider)
        {
            var logger = serviceProvider.GetService<ILogger>();
        }
    }
}

安装依赖Microsoft.Extensions.DependencyInjection,或使用nuget进行安装

选择合适的版本进行安装

二、运行测试

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
WPF (Windows Presentation Foundation) 是一个基于 .NET Framework 的 UI 框架,它提供了丰富的界面设计和开发功能。在 WPF 中使用 Microsoft.Extensions.DependencyInjection 可以帮助我们更好地实现依赖注入(Dependency Injection)。 Microsoft.Extensions.DependencyInjection.NET Core 中的一个轻量级依赖注入框架,它提供了简单、灵活的依赖注入方式。在 WPF 中,我们同样可以使用该框架来实现依赖注入。 首先,我们需要在 WPF 应用程序中安装 Microsoft.Extensions.DependencyInjection NuGet 包。 在 App.xaml.cs 文件中,我们可以创建一个 IServiceCollection 对象,并在其中注册依赖: ```csharp public partial class App : Application { public static IServiceProvider ServiceProvider { get; private set; } protected override void OnStartup(StartupEventArgs e) { base.OnStartup(e); var services = new ServiceCollection(); // 注册依赖 services.AddSingleton<IMyService, MyService>(); // 创建容器 ServiceProvider = services.BuildServiceProvider(); } } ``` 在上面的代码中,我们注册了一个名为 `MyService` 的服务,并指定其实现接口为 `IMyService`。当我们需要使用该服务的时候,可以通过 ServiceProvider 来解析: ```csharp var service = App.ServiceProvider.GetService<IMyService>(); ``` 这样就完成了依赖注入的过程。在 WPF 中,我们通常会在 ViewModel 中使用依赖注入,来实现视图和逻辑的分离。通过使用 Microsoft.Extensions.DependencyInjection,我们可以更方便地管理和注入依赖项,提高代码的可测试性和可维护性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

花开花落的个人博客

你的鼓励是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值