2011-04-01 25 views
0

我有一個包含放置在本地位置的圖像的html文件。要閱讀這些圖像,我正在使用獨立存儲。但是,將圖像存儲在獨立存儲中時,我需要指定文件名使我的代碼特定於這些文件名。例如:我有兩個圖像abc.jpg和xyz.jpg,但是當這些名稱更改爲abc1.jpg和xyz1.jpg時,會發生錯誤。可以使用什麼來編寫非依賴的通用代碼關於文件名?用於在IsolatedStorage中存儲文件的通用代碼

+0

術語 「ABC」, 「XYZ」, 「ABC1」 和 「XYZ1」 是標識符。如果你在一個地方改變標識符而不是其他地方,那麼你一定要指望事情會被打破?我懷疑事實上你沒有足夠好地描述這個問題。您使用「Generic」一詞可能會誤導,因爲許多開發人員在使用generic這個詞時會看到「」,但我不認爲這就是您的意思。 – AnthonyWJones 2011-04-01 07:22:21

回答

1

我不喜歡這樣寫道:

internal static T LoadFile<T>(string folderName, string filePrefix) where T : class 
{ 
    string fileStreamName = string.Format("{0}\\{1}.dat", folderName, filePrefix); 
    return LoadFile<T>(fileStreamName); 
} 

internal static T LoadFile<T>(string fileStreamName) where T : class 
{ 
    T retval = default(T); 

    if (IsoStore.FileExists(fileStreamName)) 
    { 
     using (IsolatedStorageFileStream stream = new IsolatedStorageFileStream(fileStreamName, FileMode.OpenOrCreate, IsoStore)) 
     { 
      if (stream.Length > 0) 
      { 
       DataContractSerializer dcs = new DataContractSerializer(typeof (T)); 
       retval = dcs.ReadObject(stream) as T; 
      } 
     } 
    } 

    return retval; 
} 
+0

感謝您的回覆..但IsoStore在這裏代表什麼? – Shaireen 2011-04-01 04:11:25

+0

@IndianBird'var IsoStore = IsolatedStorageFile.GetUserStoreForApplication();'試試:) – Vaysage 2011-04-01 04:53:57

+0

@SteveChadbourne:嘗試了你的建議,但再次在這裏,我將要求filestreamname。如果我不知道名稱,只知道它是一個。 jpg文件? – Shaireen 2011-04-01 05:12:03

0

一個posssible的解決方案是:

你可以使用一個資源文件,這些文件存儲您的XAP內 - 使用文件|新建 - >資源文件,然後使用資源 - >添加現有文件。

完成此操作後,資源文件將自動爲每個資源(文本文件的字符串類型以及二進制文件類型byte [])生成一個公共屬性。

您可以列出使用反射這些公共屬性 - 是這樣的:

foreach (PropertyInfo pi in MyResources.GetType().GetProperties()) 
    { 
     string propertyName = pi.Name; // the name of your resource 
     object propValue = pi.GetValue(o, null); // the value of your resource 

     // put your save code here - you might need to use some naming conventions to work out file extensions 
    } 
相關問題