我在msdn上阅读自定义序列化文章:http://msdn.microsoft.com/en-us/library/ty01x675%28VS.80%29.aspx
它提到有两种实现自定义序列化的方法:
1,使用OnDeserializedAttribute, OnDeserializingAttribute, OnSerializedAttribute, OnSerializingAttribute
2,实现ISerializable
接口
根据MSDN,方法#1是"最佳实践和最简单",但我不明白这两种方法是如何相同的.据我所知,这些OnSerializing|OnSerialized|etc
属性允许您将方法挂钩到序列化的特定阶段,而ISerializable
界面允许您直接修改进入和离开的内容SerializationInfo
.它是否正确?
为了将我的困惑置于上下文中,如何实现OnSerializing以不同的名称序列化对象字段?像下面的代码:
public virtual void GetObjectData(SerializationInfo info, StreamingContext context) { info.AddValue("i", n1); info.AddValue("j", n2); info.AddValue("k", str); }
更新:虽然Frederik Gheysels的答案并不完全正确(使用Serializable进行装饰是OnSerializing/OnDeserializing属性和ISerializable接口的先决条件),但他确实指出OnSerializing/OnDeserializing属性是ISerializable的补充,所以我是在这一点上接受他的回答.
在以下示例中:
fn main() {
let str_vec: ~[&str] = "lorem lpsum".split(' ').collect();
if (str_vec.contains("lorem")) {
println!("found it!");
}
}
Run Code Online (Sandbox Code Playgroud)
它不会编译,并说:
error: mismatched types: expected &&'static str
but found 'static str (expected &-ptr but found &'static str)
Run Code Online (Sandbox Code Playgroud)
在句子中查找单词的正确方法是什么?
我最近遇到了这个奇怪的问题,我试图在iframe中引用父窗口,但不知何故window.parent或parent总是未定义.
我通过使用window.top解决了这个问题,但是这个问题仍然困扰着我.
为什么window.parent未定义?
这是一个.NET Web应用程序,如果有帮助的话.
更新:我想补充一点,父和子iframe都指向同一个域(localhost).至于代码,我尝试了以下代码:
if (parent != null)
{
// do something
}
Run Code Online (Sandbox Code Playgroud)
在哪里做某事永远不会发生,我也尝试过
alert(parent)
Run Code Online (Sandbox Code Playgroud)
和
alert(window.parent)
Run Code Online (Sandbox Code Playgroud)
他们总是出现无效.