当前位置:主页 > 澳门太阳集团www7722138正文

澳门太阳集团www7722138:用XmlSerializer序列化陷阱

05月07日作者:黑曼巴


实际上这个bug从.net 2.0不停到现在都是存在的,而且m$也从来没有真正办理过,先看段测试代码

namespace TestMDA

{

class Program

{

static void Main(string[] args)

{

People p = new People()

{

Age = 1,

Name = "Michael"

};

AppDomain.CurrentDomain.AssemblyResolve += (sender, e) =>

{

Console.WriteLine(e.Name);

return null;

};

using (FileStream fs = new FileStream("test.txt", FileMode.Create))

{

XmlSerializer xs = new XmlSerializer(typeof(People)); //throw MDA binding fail here

xs.Serialize(fs, p);

}

Console.ReadLine();

}

}

public class People

{

public int Age { get; set; }

public string Name { get; set; }

}

}

上面这段代码无论经由过程VS05抑或VS08编译之后,运行都邑输出

TestMDA.XmlSerializers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null

TestMDA.XmlSerializers

然则实际上序列化依然可以照常进行…&h澳门太阳集团www7722138ellip;

更诡异的事实是,假如改动相对应的namespace,例如 namespace ABC {…},就会输出

ABC.XmlSerializers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null

ABC.XmlSerializers

----------------------- 瓜分线----澳门太阳集团www7722138澳门太阳集团www7722138--------------------

为什么提到这个话题呢?我们现在进行着的一个项目中某些代码应用了XML序列化要领,跟着法度榜样的运行就会看到类似上面这种日志……苦思不得结果,找遍了引用法度榜样集也没看到对应的dll或exe,想想既然无大年夜碍就暂时没去追究,不过这几天刚好项目要做一个支配分发,在测试时刚好也发明类似问题,遂 google之,发明2007年帖子一枚

https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=304095&wa=wsignin1.0

m$的说法是这个是by design的,不过直到现在.net澳门太阳集团www7722138 3.5也有这搭档,我也就不奢望啥了…

ps.当时应该是beta版本的VS,碰到这种环境会抛出非常,还好现澳门太阳集团www7722138在不会抛非常,然则也很愁闷 :)

最近关注

热点内容

更多