我想序列化可能具有属性的类别,当前值是匿名函数。据我所知,这并没有成功。然而,我的第一次单元测试似乎通过了:
[Test]
public void AnonymousTest()
{
Func<double, double, double> func = (double a, double b) =>
{
if (a > 0) // Dummy if branch to make sure this is a delegate and not expression
{
return a + b;
}
return 0;
};
var persistedFunc = SaveAndLoad(func); // Serialize and deserialize with BinaryFormatter
Assert.AreEqual(7, persistedFunc(3, 4)); // Green
}
我的问题:这是否正常工作只是因为反序列化的委托在非常相同的程序集中运行,其中匿名函数存在并且存在于同一个程序集中编译器生成的名称,或者我们可以期望它将来可能会使用可能已更改和重新编译的程序集吗?
编辑:缩小问题:我们是否知道这有什么先决条件?说一个简单的未来重新编译渲染无用的持久化状态?