草庐IT

LayoutInflater_Delegate

全部标签

c# - 获取 Action /功能委托(delegate)的名称

我有一个奇怪的情况,我需要将委托(delegate)的名称作为字符串获取。我有一个看起来像这样的通用方法。privateTGet(Ttask,Actionmethod)whereT:class{stringmethodName=method.Method.Name//ShouldreturnBark}我是这样调用它的privatevoidMakeDogBark(){dog=Get(dog,x=>x.Bark());}但我没有看到“吠叫”,而是看到了这个"b__19".所以看起来它给我的是进行初始调用的方法名称,而不是委托(delegate)的名称。有人知道怎么做吗?

c# - 在 C# 中将委托(delegate)强制转换为 Func

我有代码:publicdelegateintSomeDelegate(intp);publicstaticintInc(intp){returnp+1;}我可以投Inc至SomeDelegate或Func:SomeDelegatea=Inc;Funcb=Inc;但我不能施放Inc至SomeDelegate然后转换为Func用通常的方式是这样的:Funcc=(Func)a;//Сompilationerror我该怎么做? 最佳答案 有一个更简单的方法来做到这一点,所有其他答案都错过了:Funcc=a.Invoke;参见thisblog

c# - 将委托(delegate)用于 LINQ 的 Distinct() 的相等比较器

我有一个使用我自己的自定义比较器的LINQDistinct()语句,如下所示:classMyComparer:IEqualityComparerwhereT:MyType{publicboolEquals(Tx,Ty){returnx.Id.Equals(y.Id);}publicintGetHashCode(Tobj){returnobj.Id.GetHashCode();}}...vardistincts=bundle.GetAllThings.Distinct(newMyComparer());一切都很好,花花公子,可以按我的意愿工作。出于好奇,我是否需要定义自己的比较器,或者我

c# - 传递异步委托(delegate)的方法签名是什么?

我最近从Objective-C领域回到了C#,C#5中的async/await关键字看起来很酷。但我仍在尝试掌握正确的语法。我想声明一个将异步委托(delegate)作为参数的方法,但我无法使调用者和被调用者的语法都正确。有人可以提供显示方法声明、调用和对委托(delegate)的调用的代码示例吗?我认为声明会像下面这样。请注意,此函数不是异步的;即它的异步性独立于委托(delegate)。voidDoSomethingWithCallback(asyncdelegatefoo(int)){...foo(42);...}电话会是这样的:DoSomethingWithCallback(a

c# - 无法将 lambda 表达式转换为类型 'System.Delegate'

这些都不起作用:_uiDispatcher.Invoke(()=>{});_uiDispatcher.Invoke(delegate(){});我想要做的就是在我的主UI线程上调用一个内联方法。所以我在主线程上调用了这个:_uiDispatcher=Dispatcher.CurrentDispatcher;现在我想从另一个线程在该线程上执行一些代码。我该怎么做?我使用了错误的语法吗?请注意,这不是WPF应用程序;我引用了WindowsBase,所以我可以访问Dispatcher类。 最佳答案 问题是您没有提供要调用的委托(deleg

c# - C# 中的委托(delegate)与接口(interface)

只要我目前正在尝试深入研究委托(delegate)的用途和目的,我就想提出这个问题,尽管很可能已经以类似的形式提出了这个问题。我知道委托(delegate)用作C++中使用的函数指针。事实上,如果在C#中,它们主要用作接口(interface)和多态性的替代方案。由于我可以创建特定类的子类并为它们提供适当的方法,那么还有什么可以提供委托(delegate)呢?是否存在规定使用委托(delegate)的情况,或者仅仅是在使用委托(delegate)时提高了代码的可维护性?您会推荐他们通过接口(interface)进行广泛部署吗?我只是在谈论委托(delegate),我想将他们的角色与事件

c# - 为什么我们需要 C# 委托(delegate)

我似乎一直不明白为什么我们需要委托(delegate)?我知道它们是保存方法引用的不可变引用类型,但为什么我们不能直接调用方法,而不是通过委托(delegate)调用它?谢谢 最佳答案 简单的回答:需要执行操作的代码在编写时不知道要调用的方法。如果您在编译时知道要调用哪个方法,则只能直接调用该方法,对吗?所以如果你想抽象出“在适当的时间执行ActionX”的想法,你需要一些Action的表示,这样调用Action的方法就不需要提前知道确切的实现。例如:Enumerable.Select在LINQ中无法知道您要使用的投影,除非您告诉它

c# - 不能将 lambda 表达式用作动态分派(dispatch)操作的参数,而不先将其转换为委托(delegate)或表达式树类型

我正在使用.NET4.5和VS2013,我有一个获取dynamic的查询来自数据库的结果。dynamictopAgents=this._dataContext.Sql("selectt.create_user_idas\"User\",sum(t.netamount)as\"Amount\"fromtransactiondetailtwheret.update_date>sysdate-7groupbyt.create_user_id").QueryMany();以下语句因编译错误而失败Cannotusealambdaexpressionasanargumenttoadynamical

c# - Action<T> 与委托(delegate)事件

我见过开发人员非常交替地使用以下代码。这些之间的确切区别是什么,哪些符合标准?它们是否相同,如Action和Func也是委托(delegate):publiceventActionOnLeave;publicvoidLeave(){OnLeave(newEmployeeEventAgs(this.ID));}对比publicdelegatevoidGoOnLeave(EmployeeEventAgse);publiceventGoOnLeaveOnLeave;publicvoidLeave(){OnLeave(newEmployeeEventAgs(this.ID));}

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

我看到委托(delegate)有两种形式:A.FuncconvertMethod=lambdaB.publicdelegatestringconvertMethod(stringvalue);我不确定这两者之间的实际区别是什么。他们都是委托(delegate)吗?我相信第一个会使用lambda,而第二个则必须有一种方法来实际执行工作。我可能也很困惑。 最佳答案 首先,您的两个示例正在做两件完全不同的事情。第一个是声明一个通用委托(delegate)变量并为其赋值,第二个只是定义一个delegate。类型。您的示例更完整地是:publ