Использование pythonnet для передачи потока в .net DLL - PullRequest
0 голосов
/ 19 октября 2019

Я работаю с файловым процессором .NET DLL, но не могу заставить поток работать. У меня есть следующие соответствующие методы.

EmbedFile(string): bool
EmbedFile(Stream): bool

При использовании строковой версии, он работает, как и ожидалось, при заданном имени файла.

encoder.EmbedFile("test.dat")

Однако я не уверен, что передатьв потоковую версию. Я пробовал io.BytesIO и дескриптор файла, но оба дают мне следующее.

TypeError: No method matches given arguments for EmbedFile

Какой правильный объект для передачи в метод .NET, который принимает параметр Stream?

1 Ответ

0 голосов
/ 15 ноября 2019

Я знаю, что это поздний ответ, но вы пытались импортировать класс .NET, который наследуется от Stream, а затем создавать экземпляр в Python.

import clr
from System import File
from System.IO import FileStream

def main():   
    path = "path\\to\\file.dat"

    clrFile = File(path)

    clrFileStream = FileStream(clrFile)

    returnValue = EmbedFile(clrFileStream)

Примечание: для этого может потребоваться дополнительный импорт) если в конструкторе производного потока присутствует больше параметров .NET.

...