【发布时间】:2019-08-03 14:32:21
【问题描述】:
我有一个登录窗口和一个主页窗口,在登录类中主页是打开的,登录是关闭的:
Home home = new Home(user, _gitApiService);
home.Show();
Close();
因为Home类依赖于IGitApiService的依赖,所以我通过window类的构造函数传递依赖:
public partial class Home : Window
{
private readonly IGitApiService _gitApiService;
public Home(User user, IGitApiService gitApiService)
{
_gitApiService = gitApiService;
...等
这对我来说似乎是不好的做法,有没有更清洁的方式来访问/实例化 IGitApiService?
(对于上下文,GitApiService 只是一个使用 HttpClient 进行 api 调用的类)
【问题讨论】:
-
您使用的是 DI/IoC 容器吗?登录窗口是否也依赖于
IGitApiService服务? -
登录窗口也依赖于相同的服务。我目前正在我的 App.xaml.cs 文件中的配置服务方法中注册接口,如下所示...
services.AddHttpClient<IGitApiService, GitApiService>(...等 -
配置服务方法还将登录注册为瞬态,即
services.AddTransient(typeof(Login));我也在从我的启动方法运行var login = ServiceProvider.GetRequiredService<Login>();。,