. У меня есть сборка.NET, в которую я добавил несколько файлов в качестве двоичных ресурсов (, >500 КБ каждый ). Раньше я обращался к ним с помощью метода ResourceManager.GetObject()
в классе auto -, сгенерированном Resources
, который возвращает byte[]
.
По соображениям производительности и синтаксиса я бы предпочел работать с этими двоичными ресурсами как с потоками, а не с массивами байтов -. Я обнаружил, что, вручную отредактировав файл.resx и изменив имя класса в элементе <value>
с System.Byte[]
на System.IO.MemoryStream
, я могу использовать метод ResourceManager.GetStream()
для успешного доступа к ресурсы в виде потоков, например
<data name="MyFile" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\MyFile.ext;System.Byte[], mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
становится:
<data name="MyFile" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\MyFile.ext;System.IO.MemoryStream, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
Единственным недостатком этого подхода является то, что Visual Studio всегда добавляет новые файловые ресурсы в форме byte[]
. Есть ли способ заставить его установить для меня тип MemoryStream
?