我经常遇到想要订阅事件的情况,但我想使用lambda来执行此操作:
public class Observable
{
public event EventHandler SomethingHappened;
public void DoSomething()
{
// Do Something...
OnSomethingHappened();
}
}
// Somewhere else, I hook the event
observable.SomethingHappened += (sender, args) => Console.WriteLine("Something Happened");
Run Code Online (Sandbox Code Playgroud)
我遇到的问题是我不知道如何取消事件.由于lambda在引擎盖下创建了一个匿名委托,所以我没有什么可以调用-=的.
现在,我可以创建一个方法:
private void SomethingHappened(object sender, EventArgs args)
{
Console.WriteLine("Something Happened");
}
Run Code Online (Sandbox Code Playgroud)
然后我可以挂钩/取消所有我想要的东西:
observable.SomethingHappened += SomethingHappened;
observable.SomethingHappened -= SomethingHappened;
Run Code Online (Sandbox Code Playgroud)
但我真的非常非常喜欢使用我的lambda.在一个更复杂的例子中,lambdas在这里非常方便.
我很确定我运气不好......但我想知道是否有人想出办法做到这一点?
因此,ActionScript 3具有Vector类(Vector.)的泛型.我没有看到任何其他类使用这样的泛型.
如果你要实现Vector.你自己,你会怎么做?
所有,
我在另一篇文章中遇到了这个有趣的事情.有人指出,对我说,你可以明确地覆盖构造...这似乎没有必要,我甚至编译有些惊讶.看一看:
public class TestClass
{
public function TestClass() {}
}
public class TestClass2 extends TestClass
{
public override function TestClass2() {}
}
Run Code Online (Sandbox Code Playgroud)
在构造函数上显式调用override可能只是一个无操作,因为它肯定不是必需的. 我的问题:我在这里有一个微妙的错过吗?显式重写构造函数会告诉编译器一些东西吗?
看看ActionScript中的E4X实现,我发现他们必须弄清楚如何做三件事我不确定可以在ActionScript中定期完成:
以@为前缀的属性/ Getters:
var myAttribute = xmlPerson.@name;
用于过滤的无名函数:
xmlData.person.(/* predicate */)
谓词的lambda语法:
xmlData.person.(@name == "Brian")
所以这就是我的问题:这些仅仅Vector.<>是为E4X提供的一次性功能(很像),因此对我们来说无法实现吗?或者,作为ActionScript开发人员,我们是否可以访问这些功能?
更具体地说,我希望能够访问我自己代码的lambda谓词的表达式树(不以任何方式绑定到XML类).
我发现这被称为"过滤器操作员"......但我不知道如何利用它.不确定我可以...因为ActionScript不允许运算符重载:(
我在ngAnimate几个案例中使用Angular .在另一个,我有一个指令,正在改变列的宽度(使用Bootstrap col-md-*类)和一个如下所示的简单转换:
.column-view .column {
transition: width 1s;
}
Run Code Online (Sandbox Code Playgroud)
我没有明确地ngAnimate在这里使用,但它确实让我感到悲伤只是为了被包括在内.基本上,转换在转换到新宽度之前会跳转到零.如果我ngAnimate从我的模块中删除,过渡是顺利的,但我需要ngAnimate我的应用程序中的其他功能.
我可以禁用正常的ngAnimateCSS转换吗?我可以在这做什么来解决这个问题?快把我逼疯了.
我正在使用ember-cli来构建我的应用程序,它为我提供了一个很好的app.js文件,我可以在静态资产服务器上提供该文件。在部署时允许单独配置的最惯用的方法是什么?
例如,我可能会告诉我的app.js文件的使用者包含一个config.[js|json]将被加载的额外文件,并且该文件中的值将进入ENV对象......以便我可以将应用程序指向不同的 REST 端点,例如(QA、沙盒、预发布等)而无需重新编译。
我想一定有办法,我只是没有看到。我知道有config/environment.js文件,但它被编译到dist文件夹中。我正在寻找位于打包 JS 旁边的东西。我当然可以一起破解一些东西,所以我不是在寻找黑客。一个ember-cli-addon,也许?我认为必须有一种“余烬方式”来做到这一点。
我只是没有找到它:)
configuration ember.js ember-data ember-cli ember-cli-addons
我遇到了修复安装程序问题的错误.不幸的是,我对WIX一无所知,所以我不知道从哪里开始.
WXS文件正在添加必要的MimeMap,但是当QA在带有IIS6的Windows 2003上安装我们的应用程序时,未设置MIME类型.
我不知道从哪里开始.我们正在使用Wix 3.0.这是XML:
<iis:WebSite Id="DefaultWebSite" Description="Default Web Site">
<iis:WebAddress Id="AllUnassigned" Port="80" />
<iis:MimeMap Id="registerXapMimeType" Extension=".xap" Type="application/x-silverlight-app"/>
</iis:WebSite>
Run Code Online (Sandbox Code Playgroud)
知道为什么没有映射这个MIME类型的任何想法?
在F#中,只需说出[1..100]就可以生成一组数字.
我想在C#中做类似的事情.这是我到目前为止所提出的:
public static int[] To(this int start, int end)
{
var result = new List<int>();
for(int i = start; i <= end; i++)
result.Add(i);
return result.ToArray();
}
Run Code Online (Sandbox Code Playgroud)
通过这样做,我现在可以通过说1.To(100)创建一个集合
不幸的是,这并不像[1..100]那样可读.有没有人想出更好的方法在C#中做到这一点?如果它是小写的,它是否更具可读性?1.to(100),例如?或者,"To"是一个坏词?类似于1.Through(100)更具可读性吗?
只是寻找一些想法.有没有其他人想出更优雅的解决方案?
编辑: 阅读完回复后,我使用以下范围重新编写了我的To方法:
public static int[] To(this int start, int end)
{
return Enumerable.Range(start, end - start + 1).ToArray();
}
Run Code Online (Sandbox Code Playgroud)
我仍在寻找关于1.To(100)的可读性的想法
所以,假设我有一个带有自定义数据模板的ComboBox.数据模板中的一个项目是按钮:
<ComboBox Width="150" ItemsSource="{Binding MyItems}">
<ComboBox.ItemTemplate>
<DataTemplate>
<Button Content="ClickMe" />
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
Run Code Online (Sandbox Code Playgroud)
这个问题是该按钮吃掉了点击,如果选择了该按钮,项目就不会被选中.这意味着下拉菜单不会消失,也不会选择任何项目.
我知道为什么会发生这种情况.
有办法解决它吗?可能是一种处理按钮单击的方法(我绑定到命令)并告诉它继续向上链,这样组合框也可以处理点击?
注意:我在Silverlight中看到了我的问题,但我猜测WPF可以看到完全相同的行为.
我有以下模板:
<a href="{{test_url}}>Test</a>
Run Code Online (Sandbox Code Playgroud)
但它不起作用,而{{}}在输出中变为html编码.
我该如何防止这种情况?
c# ×2
angularjs ×1
backbone.js ×1
combobox ×1
css ×1
ember-cli ×1
ember-data ×1
ember.js ×1
events ×1
generics ×1
itemtemplate ×1
lambda ×1
mime ×1
ng-animate ×1
set ×1
silverlight ×1
wix ×1
wpf ×1