Resx.cs
上传用户:whjkdz
上传日期:2013-05-19
资源大小:79k
文件大小:3k
源码类别:

.net编程

开发平台:

C#

  1. using System;
  2. using System.Collections;
  3. using System.Globalization;
  4. using System.IO;
  5. namespace Sunrise.Web.Upload
  6. {
  7. //[StrongNameIdentityPermission(SecurityAction.LinkDemand, Name="Sunrise.Web.Upload", PublicKey="0024000004800000940000000602000000240000525341310004000001000100CB860429768BA0BBAC7170DDCCFB0D249FA6FF3906EBE2CCED8E7D30122A3626D6FF80B93943A447153F35F676F3907E2DF715ACA8DF4FB707042C00739360174F4126F8C84D5EF43AAF877CF1F5B5FC8AE349542746771441B23B317464CC233E5DCA86FCB25D84FD63AE1651C9F013497F3B457EED6FF0052E2C14C13DD1A2")]
  8. public class Resx
  9. {
  10. // Fields
  11. private static Hashtable asmfiles;
  12. internal static Hashtable Files;
  13. // Methods
  14. static Resx()
  15. {
  16. Resx.Files = new Hashtable();
  17. }
  18.   
  19. public Resx()
  20. {
  21. }
  22.  
  23. public static byte[] LoadAssemblyFiles(string fileName)
  24. {
  25. if (fileName == null)
  26. {
  27. throw new ArgumentNullException("filename");
  28. }
  29. if (!fileName.StartsWith("/"))
  30. {
  31. throw new ArgumentException("must starts with '/'", "filename");
  32. }
  33. fileName = ("/" + fileName.Remove(0, 1).Replace('/', '.'));
  34. if (Resx.asmfiles == null)
  35. {
  36. Hashtable ht = new Hashtable();
  37. string[] resNames = typeof(Resx).Assembly.GetManifestResourceNames();
  38. foreach (string resName in resNames)
  39. {
  40. if (resName.StartsWith("Sunrise.Web.Upload.Resources."))
  41. {
  42. byte[] fileContent;
  43. string key = ("/" + resName.Remove(0, "Sunrise.Web.Upload.Resources.".Length));
  44. key = key.ToLower();
  45. using (Stream stream = typeof(Resx).Assembly.GetManifestResourceStream(resName))
  46. {
  47. fileContent = new byte[stream.Length];
  48. stream.Read(fileContent, 0, fileContent.Length);
  49. }
  50. ht.Add(key, fileContent);
  51. }
  52. }
  53. Resx.asmfiles = ht;
  54. }
  55. return ((byte[]) Resx.asmfiles[fileName.ToLower()]);
  56. }
  57.  
  58. public static byte[] LoadFile(string filename)
  59. {
  60. byte[] fileContent;
  61. if (filename == null)
  62. {
  63. throw new ArgumentNullException("filename");
  64. }
  65. //Define the structure of resource file name.
  66. object[] objArray = new object[5];
  67. objArray[0] = CultureInfo.CurrentUICulture;
  68. objArray[1] = ":";
  69. objArray[2] = CultureInfo.CurrentCulture.ToString();
  70. objArray[3] = ":";
  71. objArray[4] = filename;
  72. string fullFileName = string.Concat(objArray).ToLower();
  73. if (Resx.Files.Contains(fullFileName))
  74. {
  75. fileContent = ((byte[]) Resx.Files[fullFileName]);
  76. }
  77. else
  78. {
  79. fileContent = Resx.LoadAssemblyFiles(filename);
  80. Resx.Files[fullFileName] = fileContent;
  81. }
  82. return fileContent;
  83. }
  84.  
  85. }
  86. }