小编Bri*_*sio的帖子

在C#中使用Lambda的UnHooking事件#

我经常遇到想要订阅事件的情况,但我想使用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在这里非常方便.

我很确定我运气不好......但我想知道是否有人想出办法做到这一点?

c# events lambda

5
推荐指数
2
解决办法
3355
查看次数

你会如何实现像Vector.<T>这样的泛型?

因此,ActionScript 3具有Vector类(Vector.)的泛型.我没有看到任何其他类使用这样的泛型.

如果你要实现Vector.你自己,你会怎么做?

generics actionscript-3

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

在ActionScript3中显式覆盖构造函数

所有,

我在另一篇文章中遇到了这个有趣的事情.有人指出,对我说,你可以明确地覆盖构造...这似乎没有必要,我甚至编译有些惊讶.看一看:

public class TestClass
{
    public function TestClass() {}
}

public class TestClass2 extends TestClass
{
    public override function TestClass2() {}
}
Run Code Online (Sandbox Code Playgroud)

在构造函数上显式调用override可能只是一个无操作,因为它肯定不是必需的. 我的问题:我在这里有一个微妙的错过吗?显式重写构造函数会告诉编译器一些东西吗?

actionscript-3

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

ActionScript中的E4X

看看ActionScript中的E4X实现,我发现他们必须弄清楚如何做三件事我不确定可以在ActionScript中定期完成:

以@为前缀的属性/ Getters: var myAttribute = xmlPerson.@name;

用于过滤的无名函数: xmlData.person.(/* predicate */)

谓词的lambda语法: xmlData.person.(@name == "Brian")

所以这就是我的问题:这些仅仅Vector.<>是为E4X提供的一次性功能(很像),因此对我们来说无法实现吗?或者,作为ActionScript开发人员,我们是否可以访问这些功能?

更具体地说,我希望能够访问我自己代码的lambda谓词的表达式树(不以任何方式绑定到XML类).

我发现这被称为"过滤器操作员"......但我不知道如何利用它.不确定我可以...因为ActionScript不允许运算符重载:(

actionscript-3

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

Angular ngAnimate导致宽度动画跳跃

我在ngAnimate几个案例中使用Angular .在另一个,我有一个指令,正在改变列的宽度(使用Bootstrap col-md-*类)和一个如下所示的简单转换:

.column-view .column {
  transition: width 1s;
}
Run Code Online (Sandbox Code Playgroud)

我没有明确地ngAnimate在这里使用,但它确实让我感到悲伤只是为了被包括在内.基本上,转换在转换到新宽度之前会跳转到零.如果我ngAnimate从我的模块中删除,过渡是顺利的,但我需要ngAnimate我的应用程序中的其他功能.

我可以禁用正常的ngAnimateCSS转换吗?我可以在这做什么来解决这个问题?快把我逼疯了.

这是一个证明问题的小提琴.有关复制的说明,请参阅注释.

css twitter-bootstrap angularjs ng-animate

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

在 Ember 中分离环境配置

我正在使用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

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

通过WIX添加MimeMap失败

我遇到了修复安装程序问题的错误.不幸的是,我对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类型的任何想法?

mime wix

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

在C#中生成整数集

在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)的可读性的想法

c# set

3
推荐指数
2
解决办法
1299
查看次数

带有ItemTemplate的ComboBox,包含一个按钮

所以,假设我有一个带有自定义数据模板的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可以看到完全相同的行为.

silverlight wpf combobox itemtemplate

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

Backbone.js:元素属性中的模板变量不起作用

我有以下模板:

<a href="{{test_url}}>Test</a>
Run Code Online (Sandbox Code Playgroud)

但它不起作用,而{{}}在输出中变为html编码.

我该如何防止这种情况?

backbone.js

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