小编Lud*_*ltz的帖子

使用'Object.create()'而不是'new'关键字来理解原型对象的创建

我来到一个包含这些行的代码

var data = function() {
    function Metadata() { /*some initialization here*/ }

    Metadata.prototype = Object.create(Backend.prototype);
    Metadata.prototype.constructor = Metadata;

    return Metadata;
}
Run Code Online (Sandbox Code Playgroud)

我很难理解实际发生了什么,以及如何使用返回的对象.如果我理解正确,data现在将是一个应该像这样初始化的对象

var d = new data()
Run Code Online (Sandbox Code Playgroud)

但我不明白以下几行,为什么Object.create()用而不是new关键字:

Metadata.prototype = Object.create(Backend.prototype);
Metadata.prototype.constructor = Metadata;
Run Code Online (Sandbox Code Playgroud)

他们在做什么?他们有必要吗?和之间有什么区别Object.createnew

javascript constructor prototype object

10
推荐指数
2
解决办法
195
查看次数

.NET Core 中 tcp 服务器的 IHostedService

我正在尝试构建一个小型 tcp 服务器/守护进程,将 asp.net 核心作为 Web 前端与服务器进行交互。我发现 IHostedService/BackgroundService 似乎提供了一种将服​​务器和前端捆绑在一起的低成本替代方案。

代码目前看起来基本上是这样的(用于测试目的的回声服务器):

public class Netcat : BackgroundService
{
    protected override async Task ExecuteAsync(CancellationToken stoppingToken)
    {
        TcpListener listener = new TcpListener(IPAddress.Any, 8899);
        listener.Start();
        while(!stoppingToken.IsCancellationRequested)
        {
            TcpClient client = await listener.AcceptTcpClientAsync();
            NetworkStream stream = client.GetStream();

            while (!stoppingToken.IsCancellationRequested)
            {
                byte[] data = new byte[1024];
                int read = await stream.ReadAsync(data, 0, 1024, stoppingToken);

                await stream.WriteAsync(data, 0, read, stoppingToken);
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

并在 Startup.cs 中初始化如下:

    public void ConfigureServices(IServiceCollection services)
    {
        services.AddHostedService<Netcat>();
        services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
    }
Run Code Online (Sandbox Code Playgroud)

对于现代 Asp.Net 核心应用程序和守护进程应该如何合作,是否有一个共同的模式? …

c# tcplistener .net-core asp.net-core asp.net-core-hosted-services

9
推荐指数
1
解决办法
6944
查看次数

如何从另一个类调用VRInput类事件(OnClick,OnDoubleClick,...)?

我正在为我的游戏添加重播功能.有了这个功能,我可以捕获用户对游戏的输入并稍后将它们反馈给Unity以重放游戏.但是VRStandardAssets.Utils.VRInput类的设计阻止了我模仿用户输入.

此类不提供任何公共方法,以便以编程方式触发其事件(例如OnClick或OnDoubleClick事件).所以我决定从它创建一个派生类,并编写我自己的公共方法来触发事件.此策略失败,因为VRInput的方法是私有的意思,我不能从派生类调用它们.

建议这类类提供受保护的虚拟void On [eventName](subclassOfEventArgs e)方法,以便为派生类提供一种使用覆盖来处理事件的方法,但是这个类没有它(为什么这么限制? ).我猜这是Unity的糟糕设计.这种糟糕的设计也使得编写单元/集成测试变得困难.

我在这里错过了什么吗?在重放游戏时,我还能做些什么来欺骗其他类认为他们正在处理VRInput类吗?

c# design-patterns unity-game-engine virtual-reality

6
推荐指数
1
解决办法
246
查看次数

为 linux-musl-arm 编译 dotnet core 应用程序

我尝试使用以下命令在ARM Cortex A7上为OpenWRT编译一个简单的.NET Core hello world 应用程序:linux-musl-arm

dotnet publish --configuration Release --runtime linux-musl-arm --self-contained
Run Code Online (Sandbox Code Playgroud)

但是当我尝试执行它时出现以下错误:

root@Routeur:~/RutxApp# ./RutxApp
Error relocating ./RutxApp: _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev: symbol not found
Error relocating ./RutxApp: _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERjj: symbol not found
Error relocating ./RutxApp: _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_assignERKS4_: symbol not found
Error relocating ./RutxApp: _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE10_M_replaceEjjPKcj: symbol not found
Error relocating ./RutxApp: _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_mutateEjjPKcj: symbol not found
Error relocating ./RutxApp: _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_appendEPKcj: symbol not found
Error relocating ./RutxApp: _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5rfindEPKcjj: symbol not found
Error relocating ./RutxApp: _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5rfindEcj: symbol not found
Error relocating …
Run Code Online (Sandbox Code Playgroud)

c# arm openwrt musl .net-core

6
推荐指数
1
解决办法
1770
查看次数

如何在运行时向游戏对象添加 onclick 侦听器

我希望我的问题不是重复的;我有很多Gameobjects团结。我需要onclicklistener使用脚本将运行时添加到游戏对象中...

请帮忙。

c# unity-game-engine

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

将Excel文件上传到Web API

我正在尝试将excel文件及其内容上传到我的WebApi和DO STUFF。我已经完成了通过上传按钮发送文件的extJs部分。(下面的代码)

我的问题是我不知道如何构建webApi部分来处理excel文件。我猜我必须有一个HttpPost。

假WebApi:

public string SampleUploadFile()
{
    return _repo.UploadFile();
}
Run Code Online (Sandbox Code Playgroud)

Extjs代码:

xtype: 'form',
//renderTo: 'fi-form', //(5)
fileUpload: true, //(1)
width: 500,
frame: true,
title: 'Position Sheet Upload Form',
bodyPadding: '10 10 0',
//bodyStyle: 'padding: 10px 10px 0 10px;',

defaults: {
    anchor: '100%',
    allowBlank: false,
    msgTarget: 'side',
    labelWidth: 50
},

//labelWidth: 50,
items: [{
    xtype: 'fileuploadfield',
    emptyText: 'Select an image',
    fieldLabel: 'Image',
    name: 'file', //(2)
    buttonText: 'Choose a file'
}],
buttons: [{
    text: 'Save',
    handler: function () {
        if (this.up('form').getForm().isValid()) …
Run Code Online (Sandbox Code Playgroud)

excel extjs asp.net-web-api

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

如何等待异步任务

static void Main(string[] args)
{
    Action myAction = async () =>
    {
        await Task.Delay(5);
        Console.WriteLine(Interlocked.Add(ref ExecutionCounter, 1));                
    };

    var actions = new[] { myAction, myAction, myAction };

    Task.WaitAll(actions.Select(a => Execute(a)).ToArray());  //This blocks, right?

    Console.WriteLine("Done waiting on tasks.");
    Console.ReadLine();
}

static int ExecutionCounter = 0;

private static Task Execute(Action a)
{
    return Task.Factory.StartNew(async () =>
    {
        await Task.Delay(5);
        a();
    });
}
Run Code Online (Sandbox Code Playgroud)

这看起来很简单,但输出总是看起来像这样(数字的顺序当然会改变):

完成等待任务.

2

1

3

我在这里错过了什么?为什么Task.WaitAll不像我期待的那样阻止?

c# task

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

在循环中如何引用主"this"?

我有一个包含字符串的数组,我想将这些项目作为单个字符串返回,但它们之间有空格.

listProperties() {
    this.properties = "";
    this.state.withoutSuit.forEach(function (i, j) { 
      this.properties += i;
      this.properties += " ";
    });
    console.log(this.properties);
    return this.properties;
  }  
Run Code Online (Sandbox Code Playgroud)

所以在构造函数中我将this.state.withoutSuit作为我的数组,并将this.properties作为我将存储其间隔开的字符串版本的地方.

在函数中,我首先将this.properties设置为空字符串,然后我想用withoutSuit数组项填充它.

但是当我进入forEach循环时,this.properties是未定义的.我认为这是因为"this"现在指的不是构造函数,而是指this.state.withoutSuit: - 是吗?

如果是这样,我如何从循环中引用属性变量?

谢谢!

javascript arrays state this reactjs

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

在统一中加载另一个场景时 int 变量重置

我创建了一个足球比分计算器。我有一个可以更改场景的按钮,但是当我更改场景并重新打开它时,分数值将重置为 0。代码如下:

public class Main : MonoBehaviour {
    public Text plusUp;
    public int value = 0;

    public void button(int sc)
    {
        SceneManager.LoadScene(sc);
    }

    public void plus()
    {
        value++;
        plusUp.text = value.ToString();
    }
}
Run Code Online (Sandbox Code Playgroud)

c# unity-game-engine

0
推荐指数
2
解决办法
5310
查看次数