小编Kal*_*rak的帖子

如何在TypeScript中访问静态方法

我正在努力做到这一点,但它没有像我期望的那样工作.

(我正在使用AMD选项)

//logger.ts
export class Logger {

    static log(message: string) {
        //do stuff
    }
}

//main.ts
import logger = module('services/logger');
logger.log("test"); //The property 'log' does not exist on value of type '"logger"'
logger.Logger.log(); //works
Run Code Online (Sandbox Code Playgroud)

你是怎么做logger.log()的?

typescript

60
推荐指数
2
解决办法
7万
查看次数

动态调用的RuntimeBinderInternalCompilerException

将对象作为动态参数传递时,我收到了意外的RuntimeBinderInternalCompilerException.

我将尝试解释这个场景,因为它太容易粘贴代码了.我正在和Roslyn做一些非常奇怪的讨厌,所以听起来很奇怪.

  1. 执行申请
  2. 监视更改的源代码
  3. 使用更改的文件/类重新编译程序集的有效差异
  4. 将新编译的程序集加载到原始AppDomain中
  5. 将现有对象实例作为Dynamic传递给新的/更改的代码,因此新代码可以在现有的上下文/应用程序状态下运行.

这种动态传递应该有效,因为类型是兼容的:即,在我的情况下,我可以保证它具有功能匹配的方法/类型.

但是当我去执行change + reloaded方法,并且它收到一个类型为dynamic的对象时,我得到了这个异常.

RuntimeBinderInternalCompilerException was unhandled.
An unexpected exception occurred while binding a dynamic operation
Run Code Online (Sandbox Code Playgroud)

每个MSDN:

此类异常与RuntimeBinderException的不同之处在于,RuntimeBinderException表示在通常的编译器错误意义上无法绑定,而RuntimeBinderInternalCompilerException表示运行时绑定程序本身的故障.

谷歌绝对没有结果.我不知道如何进一步调试它.有什么建议?

(我确实做了一些沙盒测试,以确保自己可以在运行时将不同的程序集加载到测试应用程序中,并将实例类型从不同的程序集传递给接受动态参数的单个方法.所以它在这种情况下有效.)

c# dynamic roslyn

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

WPF UIElement.IsHitTestVisible = false; 还在回击?

我从FrameworkElement派生一个控件用作VisualCollection的容器,因为我正在使用DrawingVisuals进行大量自定义渲染(创建游戏地图).

我有几个不同的容器实例层叠在一起,我只想要命中测试来影响当前可见的层,所以我尝试做了明显的,并设置.IsHitTestVisible = false,根据MSDN应该防止任何子元素作为命中结果返回.

但是,我仍然在设置的容器上返回命中.IsHitTestVisible = false.我已经尝试了我能想到的所有其他东西,折叠,隐藏,禁用,0不透明,似乎没有任何东西可以把它从命中测试中拿出来.

c# wpf

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

Drangendal激活函数内部的.datepicker调用无法正常工作

我在视图中编写它,然后尝试在结果上调用.datepicker(),但没有任何反应.

撰写容器

<div>
<!--ko compose: { model:'viewmodels/schedule', view: 'views/schedule.html', activate:true} -->
<!--/ko-->
</div>
Run Code Online (Sandbox Code Playgroud)

schedule.html

<div class="schedule-editor">

</div>
Run Code Online (Sandbox Code Playgroud)

和计划模块

define([], function () {
    var vm = {
        activate: activate,
    };
    return vm;

    function activate() {
        $('.schedule-editor').datepicker();
        console.log("activated schedule module");
        return true;
    }
});
Run Code Online (Sandbox Code Playgroud)

控制台记录"激活的计划模块",但未创建日期选取器.如果我转到chrome控制台并运行jQuery调用, $('.schedule-editor').datepicker();它就会调出datepicker就好了.

Durandal文档声称在DOM完全组合后调用activate函数,所以我不知道还有什么可以尝试.

javascript jquery durandal

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

KO找不到带ID的模板

我之前使用过Knockout模板,所以我不确定为什么这对我不起作用.我尝试了两种不同风格的ko标记,但都没有工作.

<!-- more nesting levels -->
<div class="cal-day-tps" data-bind="foreach: timePeriods">
    <div class="cal-day-tp-cont">

        <div data-bind="template: { name: 'tp-ed-templ', data: $data }"></div>

        //both of these methods fail
        <!-- ko template: { name: 'tp-ed-templ', data: $data } -->
        <!-- /ko -->

    </div>
</div>    
<!-- /more nesting levels -->


<script type="text/html" id="tp-ed-templ">
 <!-- bunch of markup -->
</script>
Run Code Online (Sandbox Code Playgroud)

我刚收到错误"无法找到ID为tp-ed-templ的模板".

可能只是一个错字,但我一直无法找到它.

这似乎是Durandal的一个问题,而不是Knockout.

我在vanilla durandal设置中尝试了一些非常简单的案例,它仍然做同样的事情.甚至尝试将脚本放在与绑定相同的嵌套位置,没有骰子.

javascript knockout.js durandal

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

SyntaxRewriter.Visit*不访问类型*的所有节点

解决了: mike z是对的,我没有正确地调用基数来继续递归.谢谢,迈克

我正在使用Roslyn进行一些代码重写,通过实现一个SyntaxRewriter.

我遇到的奇怪的事情是,当覆盖时SyntaxNode.VisitInvocationExpression(InvocationExpressionSyntax),它不会访问InvocationExpressionSyntax树中的所有节点.(我认为所有SyntaxNode类型都是一样的)

例如,给定此调用表达式:

  controller.Add(5, 6).ToString();
Run Code Online (Sandbox Code Playgroud)

它只访问整个表达式的节点,即使有2个调用.

虽然我当然可以写一个递归函数或类似于解析子/嵌套的InvocationExpression节点,但这似乎不一致和不方便.
为什么不访问整个树中*类型的所有节点?

这是我的覆盖:

    public override SyntaxNode VisitInvocationExpression(InvocationExpressionSyntax node)
    {
        IdentifierNameSyntax ident = node.ChildNodes().OfType<IdentifierNameSyntax>().FirstOrDefault();
        if (ident == null)
            return node;//In my test case, the example above returns here when it's node is encountered.  Shouldn't this then allow the walker to continue deeper into the node,
                        // finding the deeper nested Invocations?

        string name = ident.PlainName;
        if (!TempStore.ConstructedInvocations.ContainsKey(name))//not replacing this then
            return node;

        InvocationExpressionSyntax newInvocation …
Run Code Online (Sandbox Code Playgroud)

c# roslyn

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

渲染DynamicFolderBundle?

我正在尝试添加一个捆绑的文件夹,所以我不必手动将每个新的.less文件添加到通常的包中,但我不知道如何渲染它.

在BundleConfig中,

 BundleTable.Bundles.Add(new DynamicFolderBundle("Content/autobundled", "*.less", new LessTransform(), new CssMinify()));
//.less sheets are at Content/autobundled/example.less 
Run Code Online (Sandbox Code Playgroud)

在Razor页面中:

 @Styles.Render("Content/autobundled")
Run Code Online (Sandbox Code Playgroud)

输出:

<link href="/Binky.Web/Content/autobundled" rel="stylesheet">
Run Code Online (Sandbox Code Playgroud)

但这并没有链接任何文件,只是链接到不可浏览的目录.我读过的文章没有说明在创建文件夹后如何使用文件夹包.

asp.net asp.net-mvc-4 bundling-and-minification asp.net-optimization

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

Celery 工作人员 onStart 事件?

我一直在查看 Celery 4.3.0 文档,但我找不到工作人员的任何类型的生命周期事件。大多数工作程序管理都是基于命令行的,但我需要一种在代码中挂钩工作程序启动事件的方法,以便我可以执行一些自定义的队列使用者分配。

Celery有这样的活动吗?

celery

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