Tag: 委托

匿名代表在C#

我不能成为唯一一个厌倦了定义和命名一个委托,只需要一个委托的事情。 例如,我想在可能的其他线程的窗体中调用.Refresh(),所以我写了下面的代码: private void RefreshForm() { if (InvokeRequired) Invoke(new InvokeDelegate(Refresh)); else Refresh(); } 我甚至不知道我必须这样做,我只是读了足够的恐惧,以至于在稍后的阶段它不起作用。 InvokeDelegate实际上是在另一个文件中声明的,但是我真的需要一个专门用于此的整个委托吗? 根本没有通用的代表吗? 我的意思是,例如,有一个笔类,但也有钢笔。 select笔,所以你不必重做整个事情。 这是不一样的,但我希望你明白我的意思。

有可能有一个委托作为属性参数?

是否有可能有委托作为参数的参数? 喜欢这个: public delegate IPropertySet ConnectionPropertiesDelegate(); public static class TestDelegate { public static IPropertySet GetConnection() { return new PropertySetClass(); } } [AttributeUsage(AttributeTargets.Class | AttributeTargets.Interface,AllowMultiple=false,Inherited=true)] public class WorkspaceAttribute : Attribute { public ConnectionPropertiesDelegate ConnectionDelegate { get; set; } public WorkspaceAttribute(ConnectionPropertiesDelegate connectionDelegate) { ConnectionDelegate = connectionDelegate; } } [Workspace(TestDelegate.GetConnection)] public class Test { } 如果不可能,那么明智的select是什么?

.NET 4.0中的合作和变体错误

一些奇怪的行为与C#4.0共同支持和反对支持: using System; class Program { static void Foo(object x) { } static void Main() { Action<string> action = _ => { }; // C# 3.5 supports static co- and contravariant method groups // conversions to delegates types, so this is perfectly legal: action += Foo; // since C# 4.0 much better supports co- and […]

为什么有些closures比其他人更“友善”?

让我提前道歉 – 我可能在屠杀术语。 我对封闭是什么有一个模糊的理解,但不能解释我所看到的行为。 至less,我认为这是一个封闭的问题。 我在网上search,但还没有find正确的关键字来得到我想要的。 具体来说 – 我有两个真正类似的代码块(至less在我眼中)。 第一: static void Main(string[] args) { Action x1 = GetWorker(0); Action x2 = GetWorker(1); } static Action GetWorker(int k) { int count = 0; // Each Action delegate has it's own 'captured' count variable return k == 0 ? (Action)(() => Console.WriteLine("Working 1 – {0}",count++)) : […]

我如何取消注册“匿名”事件处理程序

说如果我听一个事件: Subject.NewEvent += delegate(object sender, NewEventArgs e) { //some code }); 现在我该如何取消注册这个事件? 或者只是让内存泄漏?

成为UITableView的UIScrollViewDelegate委托

我有一个UITableView实例variables。 我想能够注册我的视图控制器是我的UITableViewController的UIScrollViewDelegate 。 我已经尝试过了 tableView.delegate = self; 但是当滚动,我的方法 – (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView – (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate 不要打电话。 有什么build议么?

数据源和委托有什么区别?

我有一个与Cocoa框架devise模式有关的基本问题。 委托和数据源有什么区别? 他们两个都可以使用@protocols声明,但是一些类或框架正在使用delegate ,还有一些正在使用datasource 。 从UI/NSTableView我可以理解的是delegate响应UI相关的事件,而datasource纯粹与数据相关。 但是,我不知道Cocoa UI类以外的任何数据源实现。 注意: 我在这个问题中提到的代表并不总是与UI事件有关。 数据源问题已被回答。

在Typescript中声明委托types

来自C#背景,我想创build一个数据types,定义一个函数签名。 在C#中,这是一个如下所示的delegate : delegate void Greeter (string message); public class Foo { public void SayHi (Greeter g) { g("Hi!"); } } 现在,我想在Typescript中达到类似的效果。 我知道Typescript没有委托types,但只有lambdaexpression式。 我想出了这样的事情: class Foo { SayHi (greeter: (msg: String) => void) { greeter('Hi!'); } } 虽然这个工作,我想重复使用方法签名(msg:String) => void的几次,并认为它会更清洁创build一个自定义types – 就像在C#中的委托。 任何想法如何做到这一点?

代表的几个UIAlertViews

目前我有一个类在这里和那里popupUIAlertView 。 目前,同一个class级是这些class级的代表(这是非常合乎逻辑的)。 不幸的是,这些UIAlertView会调用类的相同委托方法。 现在,问题是 – 你怎么知道从哪个alert视图中调用委托方法? 我只是想检查警报视图的标题,但这不是那么优雅。 什么是处理多个UIAlertView的最优雅的方式?

Func <string,string>和delegate有什么区别?

我以两种forms看到代表: A. Func<string, string> convertMethod = lambda B. public delegate string convertMethod(string value); 我不确定这两者之间究竟有什么区别。 他们都是代表吗? 我相信第一个将使用lambda,第二个将有一个方法来实际执行工作。 我也可能会感到困惑。