public static object?Read(this IRead read, string filename) { if (filename.Contains("{")) { MemoryStream?memory = new MemoryStream(Encoding.UTF8.GetBytes(filename)); return(read.Read(memory)); } if (filename.Contains("(") && filename.Contains("*") && filename.Contains(".") && filename.Contains(")") && filename.Contains("|")) { // open file dialog filter Microsoft.Win32.OpenFileDialog?ofd = new Microsoft.Win32.OpenFileDialog { Filter = filename }; bool?result = ofd.ShowDialog(); if (result == true) { if (File.Exists(ofd.FileName)) { FileStream?stream = new FileStream(ofd.FileName, FileMode.Open); //stream.SetFileName(ofd.FileName); object?instance = read.Read(stream); stream.Close(); instance?.SetFileName(ofd.FileName); return(instance); } } else { return(null); } } if (File.Exists(filename)) { using FileStream fs = new FileStream(filename, FileMode.Open, FileAccess.Read); object?item = read.Read(fs); fs.Close(); SetPropertyValue(item, "FileName", filename); item?.SetFileName(filename); return(item); } else { StackTrace?stackTrace = new StackTrace(); foreach (Assembly?assembly in stackTrace.GetAssemblies()) { Stream?stream = assembly.GetStream(filename); if (stream != null) { object?item = read.Read(stream); SetPropertyValue(item, "FileName", filename); item?.SetFileName(filename); return(item); } } throw new Exception($"{filename} not found"); } }
public static Stream GetStream(this string value) { if (File.Exists(value)) { return(new FileStream(value, FileMode.Open, FileAccess.Read)); } StackTrace?stackTrace = new StackTrace(); foreach (System.Reflection.Assembly?assembly in stackTrace.GetAssemblies()) { Stream?stream = assembly.GetStream(value); if (stream != null) { return(stream); } } return(new MemoryStream(Encoding.UTF8.GetBytes(value))); }
public static Stream GetStream(this StackTrace stackTrace, string name) { foreach (Assembly?assembly in stackTrace.GetAssemblies()) { foreach (string?manifestResourceName in assembly.GetManifestResourceNames()) { if (manifestResourceName.Contains(name)) { #pragma warning disable CS8603 // Possible null reference return. return(assembly.GetManifestResourceStream(manifestResourceName)); #pragma warning restore CS8603 // Possible null reference return. } } } #pragma warning disable CS8603 // Possible null reference return. return(null); #pragma warning restore CS8603 // Possible null reference return. }