我正在使用C#和Unity依赖注入在WPF中开发MVVM应用程序。我正在为以下问题寻找最干净的解决方案。例如,我有一个类AudioChannelViewModel(让我们简称为A),我想注册两个类的实例,一个用于Channel.Left,一个用于Channel。对。这本身并不是一个问题,因为我通过将它们命名为RegisterType,然后在[Dependency(name)]
属性中引用它们来注册这些实例。使用枚举参数化对象
此外,A取决于其他一些类,让我们称之为Dep1,Dep2和Dep3。为了执行A的初始化,我必须拥有我的所有依赖关系和关于Channel的信息。
我尝试使用以下策略:
地产注入DEP1,DEP2和DEP3的,并通过与InjectionConstructor参数设置RegisterType A的通道中构造。但是,我应该如何知道A什么时候可以初始化? AFAIK我不能假设任何有关物业注入订单。
建设者注入所有四个项目。这将是恕我直言的最干净的解决方案,因为我可以在构造函数中执行初始化。但是我无法在Unity中使用它。为Channel注册A与InjectionConstructor参数会引发异常,并且注册四个InjectionConstructor参数看起来很难。
建设者注入Dep1,Dep2和Dep3以及Channel的属性注入。然后我可以在Channel setter中初始化我的课程。它适用于这种情况,但是如果A会被多个属性参数化,该怎么办?然后我不知道A何时完全建立并准备好进行初始化。
应该如何执行初始化?或者,我可能让事情变得过于复杂。
哦,我只是不知道我可以将依赖类型传递给InjectionConstructor的构造函数。谢谢!你的方法完美运作。 – madbadger 2011-05-15 10:05:48