我目前有一个帮助类,我用来混淆静态类,跟踪我正在处理的游戏中的高分。我在发布时使用Eazfuscator,发现当我的分数被序列化时,抛出了这个异常。 ArgumentException Identifier' '不符合CLS。
有没有办法可以在我的帮助程序类中存储我的高分列表,并且仍然可以在混淆后序列化它?
try
{
GameHighScore highScoreHelper = new GameHighScore();
highScoreHelper.CreateGameHighScore(highScore);
XmlSerializer serializer = new XmlSerializer(typeof(GameHighScore));
serializer.Serialize(stream, highScoreHelper);
}
catch(Exception e)
{
Logger.LogError("Score.Save", e);
}
我的帮助班:
public class GameHighScore
{
public List<HighScoreStruct<string, int>> highScoreList;
private HighScoreStruct<string, int> scoreListHelper;
[XmlType(TypeName = "HighScore")]
public struct HighScoreStruct<K, V>
{
public K Initials
{ get; set; }
public V Score
{ get; set; }
public HighScoreStruct(K initials, V score) : this()
{
Initials = initials;
Score = score;
}
}
public GameHighScore()
{
highScoreList = new List<HighScoreStruct<string, int>>();
scoreListHelper = new HighScoreStruct<string, int>();
}
public void CreateGameHighScore(List<KeyValuePair<string, int>> scoreList)
{
for (int i = 0; i < scoreList.Count; i++)
{
scoreListHelper = new HighScoreStruct<string, int>(scoreList[i].Key, scoreList[i].Value);
highScoreList.Add(scoreListHelper);
}
}
}
答案 0 :(得分:2)
尝试在您的媒体资源上使用XmlElement
属性。
答案 1 :(得分:2)
最佳解决方案不是混淆任何类型序列化所需的类。这样做会带来两个好处:
大多数混淆器允许指定使特定类/方法不被混淆的属性。
否则 - 编写自己的序列化。