我正在努力做到这一点,但它没有像我期望的那样工作.
(我正在使用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()的?
将对象作为动态参数传递时,我收到了意外的RuntimeBinderInternalCompilerException.
我将尝试解释这个场景,因为它太容易粘贴代码了.我正在和Roslyn做一些非常奇怪的讨厌,所以听起来很奇怪.
这种动态传递应该有效,因为类型是兼容的:即,在我的情况下,我可以保证它具有功能匹配的方法/类型.
但是当我去执行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表示运行时绑定程序本身的故障.
谷歌绝对没有结果.我不知道如何进一步调试它.有什么建议?
(我确实做了一些沙盒测试,以确保自己可以在运行时将不同的程序集加载到测试应用程序中,并将实例类型从不同的程序集传递给接受动态参数的单个方法.所以它在这种情况下有效.)
我从FrameworkElement派生一个控件用作VisualCollection的容器,因为我正在使用DrawingVisuals进行大量自定义渲染(创建游戏地图).
我有几个不同的容器实例层叠在一起,我只想要命中测试来影响当前可见的层,所以我尝试做了明显的,并设置.IsHitTestVisible = false,根据MSDN应该防止任何子元素作为命中结果返回.
但是,我仍然在设置的容器上返回命中.IsHitTestVisible = false.我已经尝试了我能想到的所有其他东西,折叠,隐藏,禁用,0不透明,似乎没有任何东西可以把它从命中测试中拿出来.
我在视图中编写它,然后尝试在结果上调用.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函数,所以我不知道还有什么可以尝试.
我之前使用过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设置中尝试了一些非常简单的案例,它仍然做同样的事情.甚至尝试将脚本放在与绑定相同的嵌套位置,没有骰子.
解决了: 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) 我正在尝试添加一个捆绑的文件夹,所以我不必手动将每个新的.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
我一直在查看 Celery 4.3.0 文档,但我找不到工作人员的任何类型的生命周期事件。大多数工作程序管理都是基于命令行的,但我需要一种在代码中挂钩工作程序启动事件的方法,以便我可以执行一些自定义的队列使用者分配。
Celery有这样的活动吗?
c# ×3
durandal ×2
javascript ×2
roslyn ×2
asp.net ×1
celery ×1
dynamic ×1
jquery ×1
knockout.js ×1
typescript ×1
wpf ×1