Отправить конкретные значения в BinaryWriter

Мне нужна помощь, у меня кончились идеи. Мне нужно сделать в следующем коде, чтобы иметь возможность выбрать файл из проекта (My.resources), а не HardCoding этой строки FSR.Write(My.Resources._1_5, 0, My.Resources._1_5.Length) Я хотел бы иметь возможность передать выбранное значение, но я не могу сохранить My.Resources._1_5 в байтовую переменную он продолжал говорить, что не может хранить одномерный массив байтов в байтах. _1_5 - это файл документа, и у меня есть длинный список файлов, из которых я хочу выбрать.

 Dim TempFileName As String = "TMPDoc.doc"
        Dim TempFolder As String = My.Computer.FileSystem.SpecialDirectories.Temp
        Dim path As String = Application.StartupPath & "\"
        TempFileName = path & TempFileName

        Dim FS As New System.IO.FileStream(TempFileName, IO.FileMode.Create, FileAccess.Write)
        Dim FSR As New System.IO.BinaryWriter(FS)
        FSR.Write(My.Resources._1_5, 0, My.Resources._1_5.Length)
        FSR.Close()
        FS.Close()

        appWord.Documents.Open(TempFileName)

Не уверен, объясняю ли я себя.

1 ответ

Решение

Если, как наиболее вероятно, My.Resources._1_5 свойство выставляется как байтовый массив, тогда вы можете просто создать переменную байтового массива, чтобы указать на него, например так:

Dim resource_1_5() As Byte = My.Resources._1_5

Или вы можете создать список байтовых массивов и добавить его в список, например так:

Dim resources As New List(Of Byte())()
resources.Add(My.Resources._1_5)

Однако то, что вы действительно пытаетесь сделать, это просто получить доступ к ресурсу по строковому имени, а не через конкретное свойство. Если это так, вы можете получить его по имени через ResourceManager, как это:

Dim resource_1_5() As Byte = DirectCast(My.Resources.ResourceManager.GetObject("_1_5", My.Resources.Culture), Byte())

Обратите внимание, что в приведенном выше примере GetObject метод возвращает Byte массив, но он бросает его как Object, Поэтому вам нужно использовать DirectCast или же CType бросить его обратно в Byte массив.

Другие вопросы по тегам