2013-04-16 46 views
0

我有一個嵌入式的ressource(包括在執行程序集),並可以用下面的命令來獲得這些的命名空間:VB.NET:獲取一個裝配

Assembly.GetExecutingAssembly().GetManifestResourceStream("<MyNamespace>.<File>") 

如果裝配改變我的命名空間找到包含在字符串中的所有地方。爲了避免這種情況,我想動態獲取名稱空間。是否有可能獲得程序集的命名空間或讓我使用固定值?

感謝您的回覆。

+1

您可以使用Assembly.GetManifestResourceNames()。現在你有兩個問題,最好不要寫代碼來試圖解決一個迄今爲止只能想象的問題。在代碼中使用單個常量是簡單的解決方案。 –

+0

const是一個想法,我也有;-)這似乎是最簡單的解決方案。然後我會用這個。謝謝。 – mburm

回答

3

您可以定義該命名空間中的虛擬類型,該類型中提取命名空間:

public class TestType 
{ 
} 

var obj = new TestType(); 
var ns = obj.GetType().Namespace; 

編輯:當然,這是一個很好的解決方案,如果該命名空間是現有的裝置的一部分,你必須訪問它的來源

+0

這很好。在我的情況下,我不需要虛擬類型,因爲我可以使用相同的類來執行上面的代碼。謝謝。 – mburm

+0

在類代碼中的任何方法中使用Me.GetType()。命名空間是不是更通用和全局適用? –

+0

Me.GetType()。命名空間返回當前類的名稱空間。不同的類可以有不同的名稱空間。通常情況下,我們想要獲得另一個不同的類/程序集的名稱空間。 – Aidin