小编Ric*_*rse的帖子

.gitattributes涂抹和清理过滤器作为存储库的一部分

我的git存储库中有许多模板文件,它们以不同的速率变化.然后将它们用于生成HTML页面.如果有人报告问题,我希望他们能够告诉我哪个版本的模板文件存在问题.目前,我在更改文件时手动输入日期.或者,我试着.我大部分时间都忘记了.

至少在理论上,我应该能够使用git smudge和clean过滤器来修复文件并自动插入上次更新的日期.这会很棒.

除了我在一台机器上开发,当我准备好时,我推/拉到另一台机器.

如何在另一台机器上显示污迹和清洁过滤器?我不想在路径中添加奇怪的脚本; 这只是这个存储库所需要的,所以我想让它完全自包含.在线的一切都说"将此过滤器定义添加到〜/ .gitconfig,然后将这些脚本添加到您的路径,然后设置存储库.gitattributes文件".我想要它,这样如果我去一台新计算机并克隆存储库,所有的清理和涂抹都会自动配置.

有没有人这样做过?

git gitattributes

12
推荐指数
2
解决办法
1096
查看次数

在创建JavascriptConverter时,如何返回数组?

我正在尝试编写一个自定义的JavascriptConverter,用于我正在编写的WebService.我必须编写一个自定义转换器,因为Microsoft.JScript.JSObject不支持IDictionary,所以它被视为一个数组.我有这部分工作正常.但是,因为Microsoft.JScript.ArrayObject是Microsoft.JScript.JSObject的子类,所以它也尝试使用相同的方法转换它.如何返回将被序列化为JSON数组的内容?我必须返回一个IDictionary,它将成为一个JSON对象.有什么我想念的吗?

具体来说,我如何从Serialize返回一些被序列化为Array的东西,而不是Object.

谢谢!

编辑:

我想我需要更具体一点.

Microsoft.JScript.JSObject实现IEnumerable,但不实现IDictionary.Microsoft.JScript.ArrayObject是Microsoft.JScript.JSObject的子类.如果我在JScript.NET中创建一个.asmx,当我尝试返回一个JSObject时,它会被序列化为一个数组(因为它实现了IEnumerable,但不是IDictionary),这意味着只有对象中的属性名被序列化.当然,如果我交回一个ArrayObject,它可以正常工作,并将其序列化为一个数组.

所以,我实现了一个JavascriptConverter的子类,它说它的SupportedType是Microsoft.JScript.JSObject.现在,JSObjects被正确序列化了.但是,因为ArrayObject是JSObject的子类,所以JavascriptSerializer不再负责序列化ArrayObjects本身,而是将它交给JSObject序列化程序.问题是,我的自定义序列化程序如何返回JavaScriptSerializer将作为数组正确处理的内容,而不是作为对象 - Serialize被强制返回IDictionary,并且被序列化为对象,而不是数组.

这个问题更有意义吗?

顺便说一句:我已经看过WCF和C#了,但是DataContractJsonSerializer输出完全无用,除非你只使用WCF客户端访问它; 我打算用jQuery检索它.

回答:

我终于明白了bdukes试图说的是什么,而且它有效!返回字典时,你需要告诉它它是一个数组(虽然这不适用于顶级数组).这是Serialize我要写的功能:

   public override IDictionary<string, object> Serialize (object obj, JavaScriptSerializer serializer) {
        JSObject jsobj = obj as JSObject;
        Dictionary<string, object> netdict = new Dictionary<string, object>();

        if (jsobj != null) {
            foreach (string prop in jsobj) {
                object value = jsobj.GetField(prop, BindingFlags.Default).GetValue(jsobj);
                switch (value.GetType().FullName) {
                    case "Microsoft.JScript.ArrayObject":
                        object[] arr_obj = ((IEnumerable)(Microsoft.JScript.ArrayObject)value).Cast<object>().ToArray<object>();
                        netdict.Add(prop, arr_obj);
                        break;
                    default:
                        netdict.Add(prop, value);
                        break;
                }
            }
        }
        return netdict;
    }
Run Code Online (Sandbox Code Playgroud)

c# web-services jscript.net

2
推荐指数
1
解决办法
7521
查看次数

标签 统计

c# ×1

git ×1

gitattributes ×1

jscript.net ×1

web-services ×1