Tag: 匿名方法

在c#中用reflection或类似的(没有第三方库)替换Property Getter / Setter

例如,我有一个包含在类中的属性 public class Greeter { private Hashtable _data; public string HelloPhrase { get; set; } public Greeter(data) { _data = data; } } 我想要做的是向HelloPhrase属性添加一个属性,就像这样 [MyCustomAttribute(“Hello_Phrase”)] public string SayHello { get; set; } 这样在构造函数中我可以反映已定义MyCustomAttribute的类(Greeter)中的Properties,并将属性的Get / Set方法设置为匿名方法/委托。 public Greeter(data) { _data = data; ConfigureProperties(); } 我已经设法从类中获取PropertyInfo,但这只暴露了GetSetMethod(http://msdn.microsoft.com/en-us/library/system.reflection.propertyinfo.getsetmethod.aspx)和相应的GetGetMethod。 我已经在这里和网上阅读了一些问题,但找不到不使用某种Aspects库的答案。 任何人都可以提供指向在运行时设置Get / Set方法的指针吗? 理想情况下,像一个代表 x =>_data[keyDefinedByAttribute];

C#:是否可以在匿名方法中声明局部变量?

可以在匿名c#方法中使用局部变量,即在以下代码中我只想执行一次计数。 IQueryable linq = db.Enquiries; if(…) linq = linq.Where(…); if(…) linq = linq.Where(e => (x <= (from p in db.Orders where p.EnquiryId == e.Id select p).Count() && (from p in db.Orders where p.EnquiryId == e.Id select p).Count() <= y)); if(…) linq = linq.Where(…); var result = (from e in linq select e); 匿名函数是否有“让”? 更新:请注意,我在此语句后添加了几个Where子句,因此无法使用select关闭。 /尼尔斯

链式异步/事件调用是否有一个有用的设计模式?

我目前不得不在Silverlight中集成大量的Web服务调用,这些调用类似于下面的代码。 在完成所有3的加载之前,不可能进行任何用户交互。 // In my view, having standard delegate methods (non-anonymous) makes the // code below even messier. // I’ve left out the EventArgs to shorten the example however // I usually use these objects in the delegate method. MyService1 service1 = new MyService1(); service1.GetAllUsersCompleted += delegate { MyService2 service2 = new MyService2(); service2.AnotherTaskCompleted += […]

使用匿名方法有任何开销吗?

我想知道在创建Background worker时是否通过使用匿名方法产生任何开销。 例如: public void SomeMethod() { BackgroundWorker worker = new BackgroundWorker(); worker.DoWork += (sender, e) => { //large amount of code } worker.RunWorkerAsync(); } 上面的例子是否比在单独的方法中定义//large amount of code更好或更差? 在线定义后台工作程序方法是否有任何开销,特别是如果经常调用SomeMethod() ?

是否存在委托语法优先于匿名方法的lambda表达式的情况?

随着lambda表达式(内联代码)等新function的出现,它是否意味着我们不再需要使用委托或匿名方法了? 在我看过的几乎所有样本中,都是使用新语法进行重写。 我们仍然需要使用delegates和lambda表达式的任何地方都不起作用?

匿名方法与lambda表达式

任何人都可以提供匿名方法和lambda表达式之间的简洁区别吗? 匿名方法的用法: private void DoSomeWork() { if (textBox1.InvokeRequired) { //textBox1.Invoke((Action)(() => textBox1.Text = “test”)); textBox1.Invoke((Action)delegate { textBox1.Text = “test”; }); } } 它只是一个普通的lambda表达式被强制类型化的委托,或者它有更多的秘密。 我很清楚一个强类型的代表就像跟随 UpdateTextDelegate mydelegate = new UpdateTextDelegate(MethodName) 足够作为System.Delegate类型的参数,但匿名方法的想法对我来说相当新。

代表和Lambdas和LINQ,哦,我的!

作为一个相当初级的开发人员,我遇到的问题突出了我缺乏经验和我所知的漏洞。 如果这里的序言太长,请原谅。 我发现自己处于一个涉及我需要学习一些新的(对我而来)技术的项目,包括LINQ(对于这个项目来说是OBJECTS和XML)等等。 我读到的所有内容都表明,要使用LINQ,我需要完全理解以下内容(代理,匿名方法和Lambda表达式)。 好的,所以现在很有趣。 我曾经使用过.NET事件模型,因此我已经消费了代表,但是大多数细节都是隐藏的(感谢Microsoft!)。 我理解,在基本层面上,委托实例是指向方法的指针(我知道这种过度简化)。 我知道匿名方法本质上是一种内联的未命名方法,通常(如果不是唯一的话)创建为委托的目标。 我也理解lambdas以不同的方式用于简化语法,并可用于将简单的匿名方法指向委托。 请原谅我,如果我的任何描述都在这里,那么这就是我理解这些主题的基本层面。 所以,挑战: 如果我对这些项目的了解甚至更接近,至少在基本层面上有人能告诉我吗? 我不是在寻找复杂的深奥细节,只是基础(现在)。 在将LINQ应用于项目中以达到合理的效果之前,我需要在多大程度上真正理解这些概念? 我想完全理解它,并愿意花时间。 在我需要完成一些工作之前,我可能没有时间完全理解所有这些东西。 任何人都可以向我指出一些解释这些主题的好文章,并将它们应用到“真实世界”的例子中,这样我就可以了解主题的基础知识和应用它们吗? 我的意思是现实世界,我是如何在“客户和发票”的背景下使用它而不是抽象的“矢量和形状”或“动物和奶牛”。 出于演示目的,这种情况可能有点人为,但希望不是严格的学术性的。 我在网上和书中找到了一些例子,但似乎很少有“简单英语”的解释。 提前感谢您的耐心,时间和专业知识。

LINQ vs Lambda vs Anonymous Methods vs Delegates

任何人都可以解释什么是LINQ,Lambda,匿名方法,代表意味着什么? 这3个如何彼此不同? 另一个可替换吗? 当我使用谷歌搜索时,我没有得到任何具体的答案

C# – 匿名函数和事件处理程序

我有以下代码: public List FindStepsByType(IWFResource res) { List retval = new List(); this.FoundStep += delegate(object sender, WalkerStepEventArgs e) { if (e.Step.ResourceType == res) retval.Add(e.Step); }; this.Start(); return retval; } 请注意我如何将我的事件成员(FoundStep)注册到本地就地匿名函数。 我的问题是:当函数’FindStepByType’结束时 – 匿名函数会从事件的委托列表中自动删除,还是我必须在逐步退出函数之前手动删除它? (我该怎么做?) 我希望我的问题很明确。

Lambda表达式与匿名方法

我想知道有什么区别。 目前我正在学习这些东西,在我看来,这些都是一样的: delegate void X(); X instanceOfX; instanceOfX = delegate() { code }; instanceOfX = () => { code }; 另外如果lambda更新,我应该只使用lambda并忘记匿名方法吗?