我在C#中有一个包含guid的结构.我正在使用DataContractJsonSerializer来序列化包含该类实例的对象.当我直接使用guid时,它被序列化为纯字符串,但现在它被序列化为名称/值对.这是一个NUnit测试和支持代码,用于演示此问题:
private static string ToJson<T>(T data)
{
DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof (T));
using (MemoryStream ms = new MemoryStream())
{
serializer.WriteObject(ms, data);
return Encoding.Default.GetString(ms.ToArray());
}
}
[Serializable]
private class ID
{
private Guid _value;
public static explicit operator ID(Guid id)
{
return new ID { _value = id };
}
public static explicit operator Guid(ID id)
{
return id._value;
}
}
[Test]
public void IDShouldSerializeLikeGuid()
{
Guid guid = Guid.NewGuid();
ID id = (ID) guid;
Assert.That(ToJson(id), Is.EqualTo(ToJson(guid)));
}
Run Code Online (Sandbox Code Playgroud)
并且测试运行输出:
NUnit.Framework.AssertionException: …Run Code Online (Sandbox Code Playgroud) 有没有办法在Swift中为类中的属性自动生成getter/setter函数对?在Haskell中沿着镜头的线条.
我已经能够手动执行以下操作:
class PropertyLens<U, T> {
let getter: U -> T
let setter: (U, T) -> ()
init(getter: (U -> T), setter: ((U, T) -> ())) {
self.getter = getter
self.setter = setter
}
func get(u: U) -> T {
return getter(u)
}
func set(u: U, t: T) {
setter(u, t)
}
}
// ...
let myPropertyLens = PropertyLens<MyClass, Int>(getter: { $0.myProperty }, setter: { $0.myProperty = $1 })
Run Code Online (Sandbox Code Playgroud)
然而,这比我想要的更冗长,乏味,更容易出错.是否有我缺少的内置功能?
我目前正在使用System.Web.Extensions的CompositeScript功能,以便合并我的JavaScript文件以减少下载时间.但是,通过包含任何脚本管理器,我的页面中包含MicrosoftAjax JavaScript代码.我不希望这发生,因为它添加了许多不需要的代码,并且它使事件处理变得复杂.
我正在寻找以下之一: