我有一个问题,我怀疑答案有点复杂。此刻我正在用C#编写DLL(类库)。此DLL使用第三方库,因此处理我没有源代码的第三方对象。现在我打算创建另一个DLL,它将在我的应用程序的后续体育场中使用。第二个DLL应该使用第一个DLL创建的第三方对象(具有相应的对象状态)。
幸运的是,第三方对象扩展了MarshalByRefObject
类。我可以使用System.Runtime.Remoting.Marshal(...)
封送对象。然后,我使用BinaryFormatter
序列化对象,并将对象存储为byte[]
数组。一切顺利。我可以以相反的方式反序列化和解组,最终得到我原来的第三方对象...所以看起来......
然而,当我在第三方反序列化对象上调用方法时,我得到了对象内部异常。通常这些方法返回其他第三方对象,但(显然 - 我猜)现在这些对象都丢失了,因为它们没有被序列化。
现在我的全局问题:我将如何编组/序列化我的第三方对象引用的所有对象...并级联“参考树”以获得完整且完整的序列化对象?现在我的猜测是预处理:获取所有对象并构建我自己的自定义对象并序列化它。但我希望还有其他方法......
答案 0 :(得分:1)
我有点不清楚为什么你需要两个C#程序集来处理第三方DLL,是不是你创建的第一个类库已经连接到你的第三方DLL?以下是处理本机库时的一些常规答案。如果第三方库是公开可用的,它将有助于查看它使用的接口。