MemoryStream вместо byte[] для файлов, добавленных в качестве ресурсов?

. У меня есть сборка.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?

8
задан Bradley Smith 7 May 2012 в 01:02
поделиться