Beispiel #1
0
        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");
            }
        }
Beispiel #2
0
        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.
        }