小编Anu*_*aus的帖子

vscode中的自动导入仅在TypeScript中提供带有lerna子包的绝对路径

由于某种原因,最近我的vs代码进行了更改,并开始仅使用Lerna软件包从子软件包级别提供绝对导入,例如:

在此处输入图片说明

如您所见,自动导入将建议@package/server/src/database文件的路径,因为它正好是../database要编辑的文件位于同一软件包中,并且位于文件下面的一个文件夹中,该文件夹包含我要使用的数据库变量。

这是错误还是配置问题?

我已经将Import Module Specifiervs-code中TypeScript的设置设置为所有三个选项(自动,相对和绝对),它们似乎没有任何区别。

typescript visual-studio-code auto-import

27
推荐指数
4
解决办法
7260
查看次数

在WebAPI C#中请求反序列化期间捕获异常#

我正在使用WebAPI v2.2,我正在使用[FromBody]属性将WebAPI反序列化到对象上.反序列化的目标类在内部方法上有一个[OnDeserialized]属性,如下所示:

[OnDeserialized]
internal void OnDeserialisedMethod(StreamingContext context) {
    // my method code
}
Run Code Online (Sandbox Code Playgroud)

我知道这个方法中的代码存在问题,我已经逐步完成并找到了它.对我来说问题是我完全没有例外.发生的事情是这个方法被跳出来,异常似乎被忽略了.我的控制器操作被调用,我的目标对象未正确填充,因为此序列化方法未正确执行.

我的问题是; 如何捕获WebAPI中反序列化期间发生的异常?

c# json deserialization asp.net-web-api

16
推荐指数
2
解决办法
5247
查看次数

尽管将PreserveReferencesHandling设置为"None",Json.Net仍向EF对象添加$ id

我已经看过如何在JSON序列化期间删除$ id但是给出的答案对我来说似乎没有用,我希望有人能弄清楚我做错了什么.

这是我的代码:

return JsonConvert.SerializeObject(target, new JsonSerializerSettings {
    NullValueHandling = NullValueHandling.Include,
    PreserveReferencesHandling = PreserveReferencesHandling.None,
    ContractResolver = new CustomContractResolver(),
    Converters = CustomConverters
});
Run Code Online (Sandbox Code Playgroud)

这个输出仍然以$ id出现,但仅限于Entity Framework对象,这是设计的吗?如果是这样,有没有办法阻止Entity Framework对象上的那些$ id?

c# serialization entity-framework json.net

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

依赖 LinqToObjects 的自定义 IQueryProvider

我编写了一个自定义 IQueryProvider 类,该类接受一个表达式并针对 SQL 数据库对其进行分析(我知道我可以使用 Linq2Sql,但我需要进行一些修改和调整,不幸的是,Linq2Sql 不适合)。该类将识别并使用标记的属性(使用属性)执行某些操作,但我希望能够将表达式传递给 LinqToObject 提供程序并允许它在之后过滤结果。

例如,假设我有以下 linq 表达式:

var parents=Context.Parents
    .Where(parent=>parent.Name.Contains("T") && parent.Age>18);
Run Code Online (Sandbox Code Playgroud)

Parents 类是一个自定义类,实现了 IQueryProvider 和 IQueryable 接口,但是只有 Age 属性被标记为检索,所以 Age 属性会被处理,但是 Name 属性因为没有标记而被忽略。处理完 Age 属性后,我想将整个表达式传递给 LinqToObjects 进行处理和过滤,但我不知道如何进行。

注意它不需要删除表达式的 Age 子句,因为即使在我处理它之后结果也是一样的,所以我总是能够将整个表达式发送到 LinqToObjects。

我已经尝试了以下代码,但似乎不起作用:

IEnumerator IEnumerable.GetEnumerator() {       
    if(this.expression != null && !this.isEnumerating) {
        this.isEnumerating = true;
        var queryable=this.ToList().AsQueryable();
        var query = queryable.Provider.CreateQuery(this.expression);
        return query.GetEnumerator();
    }
    return this;
}
Run Code Online (Sandbox Code Playgroud)

this.isEnumering 只是一个布尔标志设置以防止递归。

this.expression 包含以下内容:

{value(namespace.Parents`1[namespace.Child]).Where(parent => ((parent.Name.EndsWith("T") AndAlso parent.Name.StartsWith("M")) AndAlso (parent.Test > 0)))}
Run Code Online (Sandbox Code Playgroud)

当我逐步执行代码时,尽管将结果转换为列表,它仍然使用我的自定义类进行查询。所以我想,因为类 Parent 在表达式的开头,它仍然将查询路由回我的提供者,所以我尝试将 this.expression 设置为方法调用的 …

c# linq-to-objects iqueryable

5
推荐指数
1
解决办法
2189
查看次数

Kendo Grid过滤器使用带有column.values而不是下拉列表的组合框

我正在尝试让Kendo的Grid使用组合框而不是下拉列表来显示过滤器与值一起使用时.我的意思是,在网格列数组中,每列可以为数据库中的每个可能条目提供值列表(具有文本和值属性的对象),从而不显示代码,它显示可识别的名称或文本而不是代码.问题是,每当我针对列指定值时,过滤器将恢复为固定的条件列表和下拉列表,这是我不想要的.

看一个我在这里的意思例子.我想看到的是过滤器(在"类别"列上)显示组合框而不是下拉列表,但仍然使用表中代码的值显示在网格中的数据中,但是它似乎不起作用.

javascript telerik kendo-ui kendo-grid

5
推荐指数
1
解决办法
1263
查看次数

使用现有项目将json反序列化为C#列表

给定以下类别:

class Report {

    public Report() {
        this.Fields=new List<Field>();
    }

    [JsonProperty("fields")]
    public IList<Field> Fields { get; private set; }
}

class Field {

    [JsonProperty("identifier")]
    public Guid Identfier { get;set; }

    [JsonProperty("name")]
    public string Name { get;set; }
}
Run Code Online (Sandbox Code Playgroud)

并设置以下测试方法:

var report = new Report();
report.Fields.Add(new Field { Identifier = new Guid("26a94eab-3d50-4330-8203-e7750abaa060"), Name = "Field 1" });
report.Fields.Add(new Field { Identifier = new Guid("852107db-b5d1-4344-9f71-7bd90b96fec0"), Name = "Field 2" });

var json = "{\"fields\":[{\"identifier\":\"852107db-b5d1-4344-9f71-7bd90b96fec0\",\"name\":\"name changed\"},{\"identifier\":\"ac424aff-22b5-4bf3-8232-031eb060f7c2\",\"name\":\"new field\"}]}";

JsonConvert.PopulateObject(json, report);

Assert.IsTrue(report.Fields.Count == 2, "The …
Run Code Online (Sandbox Code Playgroud)

c# json json.net

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

使用redux-sagas链接异步操作

我有一个名为initialiseApp的操作,该操作显然可以初始化应用程序。我需要服务器提供一些信息,例如用户信息,样式以及有关所显示页面(这是一个单页面应用程序)的详细信息。我正在使用redux-sagas,我想不出一种方法来链接异步操作,以使它们按顺序发生,而不是并行发生。

在请求任何样式信息之前,我需要先调用用户信息,因为在服务器端,对用户的调用转到并检索用户,并在会话中进行了一些设置。由于目前正在并行请求样式,因此显示错误,因为尚未在服务器上设置用户。

因此,我尝试使用put.sync,但这似乎不起作用,但是到目前为止,这是我的代码(顺便说一下,我也在使用TypeScript):

private *invokeAndWaitOn(action: IAction<any>) {
    const putSync = (put as any).sync; // The typings file for redux-sagas does not yet include put.sync
    yield putSync(action);      
}

private *invokeArrayOfActions(actions: IAction<any>[]) {
    for (let action of actions) {
        yield* this.invokeAndWaitOn(action);
    }
}
Run Code Online (Sandbox Code Playgroud)

但这似乎不起作用,我找不到如何正确使用redux-saga的put.sync效果的任何示例。

谁能看到我在做什么错,还是有更好/正确的方法来做到这一点?

提前致谢。

asynchronous yield-keyword redux redux-saga

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