小编Gue*_*lla的帖子

我可以使用Json.net在一次操作中将嵌套属性序列化到我的类中吗?

可以说我有一个模型:

public class MyModel
{
    public string Name { get; set; }
    public string[] Size { get; set; }
    public string Weight { get; set; }

}
Run Code Online (Sandbox Code Playgroud)

和Json这样:

{
    "name" : "widget",
    "details" : {
        "size" : [
            "XL","M","S",
        ]
        "weight" : "heavy"
    }
}
Run Code Online (Sandbox Code Playgroud)

我一直试图找到一种方法来序列化我的对象,而不是为"名称"创建一个模型,为"细节"创建一个模型,因为这不能很好地映射到我的数据库,所以需要一点点玩杂耍来填充类.

我可以在JsonConvert.PopulateObject()上进行多次传递,如:

var mod = new MyModel();

JsonConvert.PopulateObject(json.ToString(), mod);
JsonConvert.PopulateObject(json["details"].ToString(), mod);
Run Code Online (Sandbox Code Playgroud)

但在我的真实代码中,我运行多个线程,PopulateObject不是线程安全的,它会阻塞应用程序.PopulateJsonAsync()的注释表示不使用它,而是在PopulateObject()上使用Task.Run().

这不起作用,当我调用它时仍然锁定应用程序:

await Task.Run(() => JsonConvert.PopulateObject(response.ToString(), productDetail));

if (response["results"].HasValues)
{
    await Task.Run(() => JsonConvert.PopulateObject(response["results"][0].ToString(), productDetail));
}
Run Code Online (Sandbox Code Playgroud)

一些人通过,但最终应用程序完全线程锁定.如果我删除PopulateObject线程都终止正常,所以我很确定这个函数不是线程安全的.

是否有一个简洁的线程安全的方法来一步填充我的对象?

c# multithreading json.net

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

垂直均匀排列列表项

我正在尝试找到一种使用 CSS 来均匀地垂直排列列表项的方法。

我希望每个列表项都有一个不改变的固定高度。我希望每个列表项之间的边距自动延伸,以便它具有相同的空间量,但 margin:auto; 不管用。

这是片段:

.container {
  border: 1px solid black;
  height: 500px;
  width: 400px;
}

.spaced {
  padding: 0;
  list-style: none;
}
.spaced li {
  border: 1px solid blue;
  height: 60px;
  margin: 15px;
}
Run Code Online (Sandbox Code Playgroud)
<div class="container">
  <ul class="spaced">
    <li>item </li>
    <li>item </li>
    <li>item </li>
    <li>item </li>
  </ul>
</div>
Run Code Online (Sandbox Code Playgroud)

因此,对于这个片段,我需要它,以便蓝色框将保持相同的高度并在垂直方向上均匀分布。如果黑框的高度发生变化,则蓝框仍将均匀分布。

我怎样才能做到这一点?

html css

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

无法将生产服务器设置为生产

在我的生产服务器上,我通过添加以下内容来设置环境变量/etc/environment:

 ASPNETCORE_ENVIRONMENT=Production
Run Code Online (Sandbox Code Playgroud)

我检查了它printenv ASPNETCORE_ENVIRONMENT在重启后记录了.

我的服务器是Ubuntu 14.04,我使用的是asp.net核心1.1.

它正在加载我appsettings.Development.json而不是appsettings.Production.json.

这是我的startup.cs构造函数

    public Startup(IHostingEnvironment env)
    {
        var builder = new ConfigurationBuilder()
            .SetBasePath(env.ContentRootPath)
            .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
            .AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true)
            .AddEnvironmentVariables();
        Configuration = builder.Build();
    }
Run Code Online (Sandbox Code Playgroud)

在我的日志文件中我可以正确地看到它说Hosting environment: Production但如果我从配置文件中输出值来查看,那么它是来自内容的值appsettings.Development.json.

我甚至尝试appsettings.Development.json从服务器删除并重新启动整个服务器,但它仍然提取相同的值,我想它必须在某处编译.

我也尝试将其添加到.csproj:

  <ItemGroup>
    <None Include="appsettings.*.json" CopyToPublishDirectory="Always" />
  </ItemGroup>
Run Code Online (Sandbox Code Playgroud)

我的设置文件显示嵌套在VS2017中,如下所示:

在此输入图像描述

默认的appsettings.json只有一个defualt值用于记录,它不包含我提取的值.

我无法弄清楚问题是什么.

c# asp.net-core

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

类型转换时的 Typescript 默认属性

有没有办法将对象类型转换为类类型,以便遵守默认属性值?

例如:

class Person {
    name: string = "bob";
    age: number;
    sex: string;
}

var data = {
    "age": 23,
    "sex": "male"
}

var p = <Person>data;

console.log(p.name); // -> undefined
Run Code Online (Sandbox Code Playgroud)

p.name鲍勃最简单的方法是什么?

*编辑

这似乎有效:

var record : Person = Object.assign(new Person(), p);
Run Code Online (Sandbox Code Playgroud)

这是好还是坏的做法?

typescript

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

使用 ChangeDetectionStrategy.OnPush 在 setTimeout 中不会触发更改检测

我有两个组件,我在其中使用 ChangeDetectionStrategy.OnPush。父组件:

    @Component({
     changeStaregy: ChangeDetectionStrategy.OnPush,
     template:`
        <button (click)="onClick()">clear</button>
        <div>
            <test [model]="model"></test>
        </div>`
    })
    export class AppComponent {
        model: TestModel;
        
        constructor(){
          this.model = { id: 1, text: 'bla bla bla'}
        }
    
        onClick() {
          this.model = new TestModel();
        }
    }
Run Code Online (Sandbox Code Playgroud)

和一个只显示数据的子组件:

    @Component({
       changeStrategy: ChangeDetectionStrategy.OnPush,
       selector: 'test',
       template: `
        <div>
              <div> {{model.id}} </div>
               <div> {{model.text}} </div>
        </div>`
    })
    
    export class TestComponent {
       @Input() model: TestModel;
       
    }
Run Code Online (Sandbox Code Playgroud)

当我单击“清除”按钮时,它会调用 onClick() 函数,该函数将一个空实体分配给“模型”。这会触发更改检测,因为输入已更改(OnPush 策略)。但是,如果我使用异步调用包装分配,则更改检测不起作用,因此 UI 不会更新:

    onClick() {
      setTimeout(() => {
        this.model = new TestModel();
      }, 2000); …
Run Code Online (Sandbox Code Playgroud)

angular

5
推荐指数
2
解决办法
4844
查看次数

收到构建或发布失败的通知

我已经将 Azure 管道与团队松弛通道集成在一起,这很好,它告诉我们构建何时完成并发布部署。但真正糟糕的是,它不会报告构建或发布失败的时间,这可以说是更重要的信息。

我进入设置尝试查看是否有任何事件,但似乎答案是否定的。我还想看看是否可以用 Zapier 之类的其他东西来完成,但我不知道如何做。

如何配置管道,以便我们的团队都能收到有关构建损坏或发布失败的通知?

azure-devops azure-pipelines

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

22021:编码“UTF8”的字节序列无效:0x00

我正在从 C# 批量导入 PostgreSQL,其中一条记录给出了此错误:

22021:编码“UTF8”的字节序列无效:0x00

我用谷歌搜索了一下,一般建议是这指的是一个空字段,但在我的例子中情况并非如此。我找到了导致错误的字符串,它是:

解决以下问题:设 $A$ 为 Banach 代数,并设 $\sum:\0\rightarrow I\rightarrow\mathfrak A\overset\pi\to\longrightarrow A\rightarrow 0$ 为 $A$ 的扩展,其中 $\mathfrak A$ 是 Banach 代数,$I$ 是 $\mathfrak A$ 中的封闭理想。

我正在从 XML 文件中读取此内容,并在文件流上定义了 UTF-8。

我的反序列化 C# 类上的转义字符串是:

"Addresses the following: Let $A$ be a Banach algebra, and let $\\sum\\:\\0\\rightarrow I\\rightarrow\\mathfrak A\\overset\\pi\\to\\longrightarrow A\\rightarrow 0$ be an extension of $A$, where $\\mathfrak A$ is a Banach algebra and $I$ is a closed ideal in $\\mathfrak A$."
Run Code Online (Sandbox Code Playgroud)

显然,字符串有些不对劲。我猜测应该存在某种数学符号,但是这到底是什么破坏了导入并使 PostgreSQL 报告它是一个空字段?应该以什么格式读取?

如果我手动覆盖此字段,则导入有效,因此该字符串 100% 存在问题。

c# postgresql

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

使用 CRACO 禁用文件分块

我想弄清楚如何使用 CRACO ( https://github.com/gsoft-inc/craco ) 来禁用创建反应应用程序中的文件分块。

我创建了以下 craco.config.js:

// craco.config.js
module.exports = {
  output: {
    fileName: 'static/js/bundle.js',
  },
}
Run Code Online (Sandbox Code Playgroud)

但它没有任何效果。使用 CRACO 在 CRA 中禁用文件分块的配置应该是什么样的?

reactjs create-react-app craco

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

块编辑器给出无效的钩子调用错误

我正在尝试让 wordpress 块编辑器加载到反应项目中:https : //www.npmjs.com/package/@wordpress/block-editor

我已经完全按照 npm 页面上的示例进行了设置,但它给出了一个无效的钩子错误。我认为这可能是由于错误提示的版本不匹配?

这是代码:

import {
  BlockEditorProvider,
  BlockList,
  WritingFlow,
  ObserveTyping
} from "@wordpress/block-editor";
import { SlotFillProvider, Popover } from "@wordpress/components";
import { useState } from "@wordpress/element";
import "@wordpress/components/build-style/style.css";
import "@wordpress/block-editor/build-style/style.css";

export default function MyEditorComponent() {
  const [blocks, updateBlocks] = useState([]);

  return (
    <BlockEditorProvider
      value={blocks}
      onInput={(blocks) => updateBlocks(blocks)}
      onChange={(blocks) => updateBlocks(blocks)}
    >
      <SlotFillProvider>
        <Popover.Slot name="block-toolbar" />
        <WritingFlow>
          <ObserveTyping>
            <BlockList />
          </ObserveTyping>
        </WritingFlow>
        <Popover.Slot />
      </SlotFillProvider>
    </BlockEditorProvider>
  );
}

Run Code Online (Sandbox Code Playgroud)

和典型的钩子错误:

Error
Invalid hook call. Hooks …
Run Code Online (Sandbox Code Playgroud)

reactjs wordpress-gutenberg

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

来自服务器的错误 (NotFound): podmetrics.metrics.k8s.io "mem-example/memory-demo" not found

我正在关注本教程:https : //kubernetes.io/docs/tasks/configure-pod-container/assign-memory-resource/

我已经创建了 memory pod 演示,我正在尝试从 pod 中获取指标,但它不起作用。

我通过克隆安装了指标服务器:https : //github.com/kubernetes-incubator/metrics-server

然后从顶层运行此命令:

kubectl create -f deploy/1.8+/
Run Code Online (Sandbox Code Playgroud)

我正在使用 kubernetes 版本 1.10.11。

pod 肯定是这样创建的:

? kubectl get pod memory-demo --namespace=mem-example
NAME          READY     STATUS    RESTARTS   AGE
memory-demo   1/1       Running   0          6m
Run Code Online (Sandbox Code Playgroud)

但是 metics 命令不起作用并给出错误:

? kubectl top pod memory-demo --namespace=mem-example
Error from server (NotFound): podmetrics.metrics.k8s.io "mem-example/memory-demo" not found
Run Code Online (Sandbox Code Playgroud)

我做错了什么?

kubernetes metrics-server

4
推荐指数
2
解决办法
2969
查看次数