Используйте MemoryStream с функцией, которая ожидает файловый поток - PullRequest
1 голос
/ 28 января 2009

У меня есть некоторые функции, которые, например, определены как

private int WriteLogikParameterTyp(FileStream filestream)

который я не могу изменить. Я хочу, чтобы они записали в объект MemoryStream. Это возможно?

Ответы [ 5 ]

1 голос
/ 28 января 2009

Поскольку вы не можете изменить сигнатуру функции, чтобы она принимала более общий тип ... Я бы предложил записать во временный файл и затем прочитать содержимое в экземпляр MemoryStream.

1 голос
/ 28 января 2009

номер

FileStream - это конкретная реализация.

Но это частный метод, поэтому его должно быть достаточно легко изменить, так как вы можете найти все внутренние применения? Предложите заменить подпись метода на Stream вместо FileStream.

Ну ... если вы не создадите временный файл, запишите его, затем прочитайте его в память.

0 голосов
/ 28 января 2009

Предложение;

Переименуйте метод следующим образом

private int WriteLogikParameterTyp_Ex(Stream stream);

Затем воссоздайте оригинальную подпись, как;

private int WriteLogikParameterTyp(FileStream filestream)
{
     return WriteLogikParameterTyp_Ex(filestream);
}
0 голосов
/ 28 января 2009

Нет. FileStream не предоставляет конструктор, который можно вызвать, поэтому вы не можете наследовать его, чтобы эмулировать.

0 голосов
/ 28 января 2009

номер

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

...