如何将System.Type转换为Uri?

时间:2012-01-09 22:37:15

标签: windows-phone-7

我有一个System.Type对象,表示我要加载的页面。此页面可能来自当前程序集或其他库。有没有通用的方法将它转换为System.Uri,我可以传递给Frame.Navigate?

3 个答案:

答案 0 :(得分:1)

两者之间唯一标准的通用接口是所有对象都实现ToString(),并且一个或多个System.Uri构造函数接受一个字符串。

除此之外的任何事情都需要由你自己创造。

答案 1 :(得分:1)

页面类型和页面URI不一定是干净的映射,但如果你没有做任何疯狂的事情,你可以这样做:

        Type blah;
        var location = new Uri("/" + blah.Name + ".xaml", UriKind.Relative);

答案 2 :(得分:0)

这不是一个完美的解决方案。它需要程序集名称和根名称空间匹配。它还要求asseblies文件夹结构与其命名空间结构相匹配。

var assemblyName = pageType.Assembly.FullName.Substring(0, pageType.Assembly.FullName.IndexOf(","));
var pageName = pageType.FullName;
pageName = pageName.Substring(assemblyName.Length+1);
pageName = pageName.Replace(".", "/");

var targetString = string.Format("/{0};component/{1}.xaml",assemblyName, pageName);
var targetUri = new Uri(targetString, UriKind.Relative);