这个例子中MEF / Prism的最佳实践?

时间:2012-09-04 16:47:30

标签: c# wcf prism mef

我有从WCF soap服务生成的类。

public partial class Job
{
  public ActivityId {get;set;}          
}

对课程的书面补充

public partial class Job
{
  public Activity Activity 
  {
    get
    {
      return *ActivityService*.Activities
                  .Where(x=>x.ActivityId==this.ActivityId)
                  .FirstOrDefault();
    }
  }
}

由于Prism的模块化特性,Activity列表中的类来自不同的Web服务和模块,以及Job生成的内容。

那么填充 ActivityService 的最佳方法是什么?还是有更好的方法?

干杯

2 个答案:

答案 0 :(得分:0)

您修复了服务上的Export Attribute,修复了客户端上的Import,并通过注册Catalog服务来完成

public partial class Job
{
  [Import]
  public Activity Activity 
  {
    get
    {
      return *ActivityService*.Activities
                  .Where(x=>x.ActivityId==this.ActivityId)
                  .FirstOrDefault();
    }
  }
}

[Export]
public class Activity
{
 ...

}

答案 1 :(得分:0)

请注意,我采用了不同的方法并使用了装饰模式。

JobService在构造时导入ActivityService并使用私有成员字段引用它。当JobService从WCF服务检索作业时,它使用ActivityService填充Activity。

public class JobService
{
  private ActivityService activityService;

  public JobService(ActivityService activityService)
  {
    this.activityService = activityService;
  }

  public Job GetJob(int jobId)
  {
    using(Client client = new Client())
    {
       Job j = client.GetJob(jobId);

       j.Activity = this.activityService.Activities
                        .Where(a=>a.ActivityId == j.ActivityId)
                        .FirstOrDefault();
       return j;
    }
  }  
}