小编Cow*_*man的帖子

如何将d3-selection-multi添加到d3?

我喜欢d3 V4让我觉得完全无能的能力.我似乎无法弄清楚如何在webpack中创建我自己的自定义包以及我的其他模块......所以我只是尝试使用vanilla d3包并为其添加多选功能.

我在Angular 2中创建了一个d3服务,依赖注入我的组件之间的d3对象.

import {Injectable} from "@angular/core";

import * as d3 from "d3";
import "d3-selection-multi";
export type D3 = typeof d3;

@Injectable()
export class D3Service {
    constructor() {
    }

    private d3: D3 = d3;

    getD3 = () => {
        return this.d3;
    };
}
Run Code Online (Sandbox Code Playgroud)

一切都很好,直到我尝试访问多种选择功能,比如使用.attrs

let test = this.d3.select("body").styles({
            "background-color": "#F00",
            "color": "#00F"
        });
Run Code Online (Sandbox Code Playgroud)

我的浏览器抱怨它不知道.attrs是什么.

error_handler.js:47 EXCEPTION:未捕获(在promise中):错误:./ListingComponent类中的错误ListingComponent_Host - 内联模板:0:0由以下原因引起:this.d3.select(...).styles不是函数TypeError: this.d3.select(...).styles不是一个函数

我也尝试合并这两个项目Object.assign无济于事.

我究竟做错了什么?这可能是愚蠢的事情.

d3.js angular

7
推荐指数
1
解决办法
443
查看次数

鼓励要订阅的事件

我有一个类ChatManager,里面有一个ChatServer和一个ChatClient(WCF)类.

我希望我实例化的控制器ChatManager能够订阅UserConnected,UserDisconnected以及MessageReceived在其上的事件ChatClient.

这样做最优雅,最合乎逻辑的方法是什么?对我来说,定义事件ChatClient就像我一样愚蠢,然后重新定义事件ChatManager只是为了将事件传递给Controller,而不必处理或了解ChatClient?在ChatManager将订阅的事件ChatClient,然后火了自己的事件,该ChatController会听.

我知道WPF具有冒泡事件的概念,但我不知道这是否适用于这种情况,因为没有任何东西是用户界面的一部分.

c# wcf events

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

如何根据条件将 var 分配为两种不同类型之一?

我有两本字典,一本用于我作为主机的文件传输,另一本用于我作为客户端的文件传输。

我正在为我的程序的一个领域编写的代码完全相似,除了引用这些项目之一或另一个。出于这个原因,如果可以的话,我试图防止重复代码。

public void UpdateFileTransferItems(FileTransferItem.FileTransferRole role)
{
    // If the role is Sender then the variable is fileTransferSessionsAsHost, otherwise it is fileTransferSessionsAsClient.
    var fileTransferSessions = role == FileTransferItem.FileTransferRole.Sender ? fileTransferSessionsAsHost : fileTransferSessionsAsClient;


    foreach (var hostSession in fileTransferSessions)
    {
         Do Work in here.
    }
}
Run Code Online (Sandbox Code Playgroud)

显然三元运算符不起作用,但我如何创建代码来完成我想要做的事情?如果角色是发件人,我希望变量是对 的引用fileTransferSessionsAsHost,否则我希望它是fileTransferSessionsAsClient.

我是在用一种迟钝的方式来做这件事吗?我应该只复制代码并有两个 if 语句吗?

编辑:

如果我找不到更好的方法,这就是我现在必须要做的。如果您看一下,除了名称和字典项引用之外,每个代码都是相同的。

        public void UpdateFileTransferItems(FileTransferItem.FileTransferRole role)
    {
        if (role == FileTransferItem.FileTransferRole.Sender)
        {
            foreach (var hostSession in fileTransferSessionsAsHost)
            {
                var fileTransferItem = activeFileTransfers.FirstOrDefault(fti => fti.SessionId == hostSession.Key.SessionId);
                if …
Run Code Online (Sandbox Code Playgroud)

c# var ternary-operator

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

ASP.NET Core 中资源的相对 url 无法从开发到生产

我正在努力解决我的 ASP.NET Core 和 Angular 2 应用程序中的一个问题,它在开发中运行良好,但是当发布到 IIS 并为 ASP.NET Core 正确配置 IIS 时,它无法加载所需的样式表和脚本。

我将所有没有映射到我的 API 路由的请求通过返回一个VirtualFileResult. index.html 有一个

<!DOCTYPE html>
<html>
<head>
    <title>Data Platform</title>
    <meta name="description" content="Data Platform" />
    <meta charset="utf8" />

    <base href="/" />
    <link rel="stylesheet" href="lib/css/vendors.css" />
    <link rel="stylesheet" href="platform/content/css/base.css" />
    <link rel="stylesheet" href="platform/content/css/bootstrap-overrides.css" />
    <link rel="shortcut icon" type="image/x-icon" href="favicon.ico" />

    <script src="lib/vendors.js"></script>
    <script>
        System.config({
            packages: {
                "/platform/": { defaultExtension: "js" }
            }
        });

        System.import("/platform/boot");
    </script>
</head>
<body>
    <data-platform>Initializing...</data-platform>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

Startup.cs配置是非常基本的:

app.UseIISPlatformHandler(); …
Run Code Online (Sandbox Code Playgroud)

iis asp.net-mvc relative-path asp.net-core angular

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

对于我应该采用泥浆/交互式小说解析器的方法感到困惑

让我想要编程的第一件事就是创建一个多人文本游戏.当我意识到,至少在我看来,写一个智能解析器会有多复杂的时候,我很害怕这个概念.

所以现在我回过头来思考它,并且我试图对这个问题进行大量的研究.事实证明它似乎比我想象的要多得多,而且我偶然发现了诸如lexing,tokenizingparsing之类的术语,只有我之前知道的后者.我认为词法分析领域是我想要寻找的.

因此,我没有尝试创建我自己的词法分析器和解析器,而这些词法分析器我读过很困难且容易出错,并且大多数人都指示远离它,我想我会找到一个好的词法分析器和解析器生成器来使用,这应该是对我来说,所有繁重的工作都可以集中在我想要的语法上.我也听过很多人说过想做这种事情的人应该简单地使用Inform.

当然,我猜Inform很酷,但C#是我选择的语言,我喜欢它让我对自己认为的Inform提供的自由.我对创建多人文本游戏的所有组件和框架比在任何一个特定的最终结果中更感兴趣,所以我喜欢最好使用标准编程语言的想法.

我一直试图为C#找一个好的词法分析器/解析器生成器一段时间,对于人们给出的评论而言似乎并没有真正满意.

C#的antlr似乎不发达,大多是事后的想法.我已经尝试过了解GPLEX和GPPG但是现在它们对我来说太混乱了,尽管阅读了很多文档并试图阅读很多关于lexing的内容.

我脑子里有很多关于lexing的整个过程的概念,但是当面对词法分析器和解析器时,我想我真的不知道这些应该如何被嵌入到我的实际代码中.

我想用名词短语和动词短语构建一个简单的英语语法,并且能够拥有名词和动词列表,这些名词和动词可以随着游戏的开发和扩展而从数据库中动态添加和准备.

我想我觉得我对这个问题的研究结果很不满意.

说实话,基于我研究的内容创建自己的词法分析器和解析器的概念的想法在这一点上比使用我读过的任何词法分析器/解析器生成器更具吸引力.

.net c# parsing lex

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