小编Bri*_*tor的帖子

如何使DataContractJsonSerializer将对象序列化为字符串?

我在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)

.net c# json datacontractserializer

10
推荐指数
1
解决办法
3万
查看次数

镜头进入Swift属性

有没有办法在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)

然而,这比我想要的更冗长,乏味,更容易出错.是否有我缺少的内置功能?

lenses swift

8
推荐指数
1
解决办法
549
查看次数

没有Microsoft Ajax JavaScript的CompositeScript

我目前正在使用System.Web.Extensions的CompositeScript功能,以便合并我的JavaScript文件以减少下载时间.但是,通过包含任何脚本管理器,我的页面中包含MicrosoftAjax JavaScript代码.我不希望这发生,因为它添加了许多不需要的代码,并且它使事件处理变得复杂.

我正在寻找以下之一:

  1. 结合JavaScript文件的Microsoft脚本管理器的替代方法不包括MicrosoftAjax,并且仍允许用户控件将脚本添加到复合脚本.
  2. 一种说服微软的脚本管理器不发出任何我没有指定的JavaScript的方法.

asp.net asp.net-ajax scriptmanager microsoft-ajax

4
推荐指数
1
解决办法
1358
查看次数