這裏我可能會遺漏一些非常簡單的東西,但使用反射從檢索嵌入資源的好處是什麼?包含資源的資源相對於只需通過.resx文件檢索它?我看到了很多,但沒有得到它 - 是否有一個原因使用Assembly.GetExecutingAssembly().GetManifestResourceStream(resource)
相比,resx文件Resources.resource
?即使是微軟也這麼做:How to embed and access resources。資源文件(.resx)vs反射以訪問嵌入資源
我的意思是:假設我有一個程序集MyAssembly
,它包含一個嵌入式資源Config.xml
。該組件具有MyClass
實現返回所述資源作爲字符串的方法:
public string GetConfigXML() // returns the content of Config.xml as a string
通常情況下,我認爲這是實現這個樣子,使用反射來檢索資源:
public string GetConfigXML()
{
Stream xmlStream = Assembly.GetExecutingAssembly().GetManifestResourceStream("MyAssembly.Config.xml");
string xml = GetStringFromStream(xmlStream);
return xml;
}
爲什麼使用GetManifestResourceStream()
時您可以:
- 添加一個資源文件(
Resource.resx
)到Visual Studio中的MyAssembly
項目; - 將
Config.xml
添加到資源的「文件」; - 得到
Config.xml
內容以更簡單的方式:string xml = Resource.Config;
我不知道Studio如何視覺內部處理.resx文件,但我懷疑它只是拷貝資源到.resx文件(以哪種情況下你最終會得到重複的資源)。我認爲它不會在內部使用反射,那麼爲什麼不在這種情況下簡單地使用.resx文件,這對我來說似乎對性能更友好?
通過組裝得到它*可能會爲您加載文化感知衛星程序集加載,而加載resx會讓您有責任爲當前文化選擇正確的。 –