Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/293.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Caliburn Micro MVVM服务_C#_Wpf_Caliburn.micro - Fatal编程技术网

C# Caliburn Micro MVVM服务

C# Caliburn Micro MVVM服务,c#,wpf,caliburn.micro,C#,Wpf,Caliburn.micro,我有两种服务,AService和BService a服务包含可观察到的X的集合 b服务需要能够访问此属性 ATM,我将集合传递给BService中的一个函数,该函数来自一个视图模型,该视图模型通过构造函数将AService注入其中 有更好的方法吗 我知道你不能将一个服务注入到另一个服务中,这样它就消失了。我认为你关于服务依赖关系不会得到解决的基本假设是错误的。 从这里开始: 引述: 注射服务 依赖项注入的主要好处是,任何请求的服务在返回给调用方之前都会解决其依赖项这是递归的,因此返回的整个对象

我有两种服务,
AService
BService

a服务
包含可观察到的X的集合

b服务
需要能够访问此属性

ATM,我将集合传递给
BService
中的一个函数,该函数来自一个视图模型,该视图模型通过构造函数将
AService
注入其中

有更好的方法吗


我知道你不能将一个服务注入到另一个服务中,这样它就消失了。

我认为你关于服务依赖关系不会得到解决的基本假设是错误的。 从这里开始:

引述:

注射服务 依赖项注入的主要好处是,任何请求的服务在返回给调用方之前都会解决其依赖项这是递归的,因此返回的整个对象图都满足依赖关系。此过程也可用于不是以属性注入形式源自依赖关系容器的实例。 构造器注入 构造函数注入是最广泛使用的依赖注入形式,它表示服务与注入它们的类之间所需的依赖关系。当您需要非可选地使用给定服务时,应该使用构造函数注入。 公共类ShellViewModel{ 专用只读iWindows管理器\u windowManager

public ShellViewModel(IWindowManager windowManager) {
    _windowManager = windowManager;
}
} 通过将IWindowManager指定为构造函数参数,我们显式地将其作为非可选服务请求。如果ShellViewModel是由依赖项容器构建的,那么它将有一个IWindowManager的实现注入其中

简而言之


如果您向BService添加了一个参数,该参数是一个AService,那么只要您注册了该服务,ioc就会解析该服务。

您不能使用简单的ioc容器向任何需要它们的服务提供这些服务的相同实例吗?我说的是一个需要包含在另一个服务中的集合的服务,这有意义吗?为什么不能将一个服务注入另一个服务?如果这些只是类,那么您将向b的ctor添加一个服务,实例将被传入。如果不在caliburn中,那么使用更好的ioc容器。问题是我们的整个系统现在都在使用caliburn micro进行di构建,所以现在很难从它切换。caliburn micro中的构造更多的是你给它接口和具体的类来创建它,然后你可以通过快速浏览文档在任何地方注入该接口。DimpleIOC似乎支持通常的IOC构造函数注入。当您注册将被解析的依赖项时。包括正在解析的类具有该依赖关系时。阅读构造函数注入,并将服务视为BService的依赖项。可以使用构造函数注入。