Как преобразовать System.Type в Uri? - PullRequest
0 голосов
/ 10 января 2012

У меня есть объект System.Type, который представляет страницу, которую я хочу загрузить.Эта страница может быть из текущей сборки или другой библиотеки.Есть ли общий способ конвертировать его в System.Uri, который я могу передать в Frame.Navigate?

Ответы [ 3 ]

1 голос
/ 10 января 2012

Типы страниц и URI страниц не обязательно являются чистым отображением, но если вы не сделали ничего сумасшедшего, вы можете сделать что-то вроде этого:

        Type blah;
        var location = new Uri("/" + blah.Name + ".xaml", UriKind.Relative);
1 голос
/ 10 января 2012

Единственный стандартный интерфейс, который является стандартным для этих двух типов, заключается в том, что все объекты реализуют ToString (), а один или несколько конструкторов System.Uri принимают строку.создание.

0 голосов
/ 10 января 2012

Это не идеальное решение.Для этого требуется имя сборки и корневое пространство имен.Также требуется, чтобы структура папок сборок соответствовала структуре пространства имён.

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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...