2010-10-24 71 views
0

我幾乎不知道URI class。我需要創建一個相對URI來引用我項目中的文件(即項目的根目錄)。URI類別101 - 相對項目參考

我該怎麼做?

這是我曾嘗試,它似乎並沒有工作:

var uri = new Uri("ModuleCatalog.xaml", UriKind.Relative) 

我也曾嘗試:

var uri = new Uri("/ShellProject;component/ModuleCatalog.xaml", UriKind.Relative); 

當我審視我uri變量在調試器已拋出很多例外。唯一真實的值是原始文本值。

我需要做些什麼才能使其成爲有效的uri?

我認爲我不明白Uri對象是如何工作的。

我想我詢問如何使一個URI的基礎,並已在我的項目中引用文件(具有硬編碼從C的完整路徑出:\驅動器

+0

什麼是「101」的稱號呢? – Timwi 2010-10-24 18:29:20

+0

@Timwi:「101」的意思是「介紹」。就像在大學的入門編程課程中一樣:「計算機科學101」。 – 2010-10-24 19:00:24

回答

2

您的應用程序是一個Web應用程序嗎? 您不使用URI來引用非Web應用程序中的本地文件。

表達

var uri = new Uri("ModuleCatalog.xaml", UriKind.Relative) 

不扔在建設任何異常,當它使用不當,它拋出後。 既然你提到你正在開發一個WPF應用程序,如果你想找到這個文件,你應該使用:

string assemblyLocation = Assembly.GetExecutingAssembly().Location 
string moduleCatalogPath = Path.Combine(assemblyLocation, "ModuleCatalog.xaml"); 
0

什麼是「不工作」的意思?這兩個代碼示例編譯並運行,給出有效的相對URI。

或者你想從相對URI製作絕對URI嗎?也就是說,如果你的根是「http:// example .com「,你想創建」http://example.com/ModuleCatalog.xaml「,在這種情況下,使用允許你傳入根的Uri.TryCreate過載。例如:

Uri baseUri = new Uri("http://example.com"); 
Uri newUri; 
if (Uri.TryCreate(baseUri, "ModuleCatalogue.xaml", out newUri)) 
{ 
    // Uri created successfully 
} 
+0

「不工作」意味着「當我在調試器中檢查我的uri變量時,它拋出了很多異常」。另外,當我嘗試在代碼中使用它時,它確實找到了該文件。 – Vaccano 2010-10-24 19:21:18

+0

我正在製作一個不是網站的WPF應用程序。如果這不是一個網站,我應該不使用uri嗎? – Vaccano 2010-10-24 19:22:23