У меня есть класс с именем XorIsoStoreFileStream, унаследованный от IsolatedStorageFileStream, и дело в том, что при использовании этого класса материал записывается с использованием «шифрования» XOR, и его также можно прочитать с помощью этого класса, когда он возвращает XOR.Например:
public override int Read( byte[] buffer, int offset, int count )
{
int startbyte = (int)base.Position;
int readlength = base.Read( buffer, offset, count );
xor( startbyte, buffer );
return readlength;
}
Кажется, что это работает хорошо везде в программе.Теперь мне нужно воспроизвести mp3-файл оттуда, и из-за переопределенных Read и ReadByte он должен работать так же, как если бы я дал SetSource IsolatedStorageFileStream.Это не займет мой класс Xor, хотя.Когда я нажимаю на play, он встречает NotSupportedException в строке SetSource, говоря: «Поток должен иметь тип IsolatedStorageFileStream».
using( var appStorage = IsolatedStorageFile.GetUserStoreForApplication() )
{
if( appStorage.FileExists( path ) )
{
using( var stream = new XorIsoStoreFileStream( path, FileMode.Open, appStorage ) )
{
App.MainAudioPlayer.SetSource( stream ); // how to put Xor stream here?
}
}
}
Есть ли что-то еще, что я могу переопределить, например сам SetSource?Кажется, это не поможет.
Нужно ли мне реализовывать MediaStreamSource?Это кажется огромным излишним, изобретением велосипеда и т. Д.
Или это просто не сработает?Придется ли мне сохранять дешифрованные части файла во временном месте, а SetSource - в обычном IsolatedStorageFileStream?