我想知道是否有人對此有任何見解。寫助推::歸檔到C#流
我有一個本地C++對象(在一個DLL中),它使用boost :: archive寫入它的數據。
該項目由C#應用程序使用(通過C++/CLI類),並且我想將這些存檔中的幾個存儲在壓縮文件中。我在C#中使用Ionic.Zipfile(DotNetZipFile)。
目前,我正在寫一個臨時文件,然後使用ZipFile.UpdateFile添加到存檔,但想避免中間人。
所以,這裏是想什麼,我這麼:
C#:
ZipEntry ae = archive.UpdateEntry("Project", (f, stream) =>
{
pManagedObjectWrapper.Save(stream);
});
C++/CLI:
void ManagedObjectWrapper::Save(System::IO::Stream^stream)
{
std::ofstream *myofstream = MAGICALFunction(stream);
pUnmanagedObject->Save(myofstream);
}
C++:
void UnmanagedObject::Save(std::ofstream *myofstream)
{
boost::archive::binary_oarchive oa(*myofstream);
oa << *this;
}
任何幫助MAGICALFunction
是什麼?
你可以/需要繼承'streambuf'或'ostream'與充當[A類(http://en.wikipedia.org/wiki/Adapter_pattern#Class_Adapter_pattern)添加到'System.IO.Stream'中,然後將它傳遞給'UnmanagedObject :: Save()'。不是因爲內心的淡淡。 – xanatos