我正在构建一个使用IoC容器进行依赖注入的WPF应用程序(在我的情况下是MEF)。该应用程序包含几个我们正在建模为WF工作流程的详细流程。但是,一些(并非所有)活动依赖于由IoC容器管理的服务和其他组件。我看到了一些可能的方法来实现这一点,但它们似乎都没有遵循最佳实践。他们是:
所以,我的问题是,我应该采取什么方法?(即你采取了什么方法?)
我也假设上面的列表并不全面,希望有人会建议一个更好的选择,如果存在的话。
THX!
答案 0 :(得分:0)
方法二似乎是最充足的。您可以在xaml中使用一些活动声明,稍后将使用它来导入真实声明。
编辑:
<wf:Workflow.Activities></activities:PassThrough UserId="mstewart"></wf:Workflow.Activities>
然后你可以在这些行中找到一些东西
interface IActivityInfo
{
IActivity ImportActivity();
}
interface IActivity<TActivityInfo> where TActivityInfo : IActivityInfo
{
IActivityInfo Info { get; }
}
class PassThrough : IActivityInfo
{
public IActivity ImportActivity(){ return ServiceLocator.Current.GetInstance<IActivity<PassThrough>>(); }
}
[Export(typeof(IActivity<PassThrough>))]
class PassThroughActivity : IActivity<PassThrough>
{
}
这种方法可以让您轻松地将xaml设计过程与基础活动分开。