1

我正在尝试成功反编译和更新我拥有的旧统一游戏,我已经修复了大部分错误,但这仍然让我感到悲伤。我能找到的所有文档都告诉我直接分配给成员,但这不是一个选项,因为成员 set_SurrogateSelector 访问内部成员 m_surrogates。

private static void Init()
{
    UnityLogWriter.Init();
    if (Application.platform.ToString().Contains("WebPlayer"))
    {
        BinaryFormatter.set_SurrogateSelector(new UnitySurrogateSelector());
    }
}


// Decompiled BinaryFormatter
...
internal ISurrogateSelector m_surrogates;
public void set_SurrogateSelector(ISurrogateSelector value)
{
    this.m_surrogates = value;
}

那么,如何设置代理选择器?还是我也必须编译自定义 mscorlib.dll?

编辑:更新的代码,同样的错误

BinaryFormatter nBFormatter = new BinaryFormatter();
UnityLogWriter.Init();
if (Application.platform.ToString().Contains("WebPlayer"))
{
      nBFormatter.SurrogateSelector = new UnitySurrogateSelector();
}
4

2 回答 2

1

那是一种财产。

BinaryFormatter.SurrogateSelector = new UnitySurrogateSelector();
于 2012-07-22T19:45:00.837 回答
1

这不是真的。BinaryFormatter.SurrogateSelector是公开的。

但你似乎用错了。

它是一个实例属性,因此需要一个实例。

于 2012-07-22T19:45:18.017 回答