如何向MEF调用添加标头

时间:2013-05-02 15:24:28

标签: silverlight header mef

我有一个silverlight应用程序,我使用MEF下载xaps。我想在呼叫的标题中放置一个授权令牌,这样任何人都无法访问xaps。像这样:

catalog = new DeploymentCatalog(_uri);
catalog.AddHeader(_header);
catalog.DownloadAsync();

唯一的问题是没有AddHeader方法。

1 个答案:

答案 0 :(得分:1)

DeploymentCatalog使用了WebClient,但似乎没有以任何方式公开它。

here的副本(由于某种原因无法在CodePlex上找到它)。 WebClient使用URI执行异步下载。完成后,响应用于使用Package.LoadPackagedAssemblies创建程序集集合。使用这些组件进行合成。

一些相关代码:

//the download
this.WebClient.OpenReadCompleted += new OpenReadCompletedEventHandler(HandleOpenReadCompleted);
this.WebClient.DownloadProgressChanged += new DownloadProgressChangedEventHandler(HandleDownloadProgressChanged);
this.WebClient.OpenReadAsync(Uri, this);

//composition on completion of async download
var assemblies = Package.LoadPackagedAssemblies(e.Result);
this.DiscoverParts(assemblies);

您可以创建一个自定义目录,它可以执行相同的操作但提供AddHeader方法,或者公开WebClient或其他任何内容。