jjzjj

c# - 如何将 Action<string> 添加到界面?

正如问题标题所暗示的,我想添加一个Action到一个界面。这可能吗?目前它说Interfacescannotcontainfields 最佳答案 您需要将其添加为属性:publicinterfaceIYourInterface{ActionYourAction{get;set;}}没有get/set它只是一个字段,正如编译器指出的那样,接口(interface)不能包含字段。这确实意味着当您实现此接口(interface)时,您还需要提供实际属性(尽管很明显它可以是一个简单的自动属性):publicclassFoo:IYourInt

c# - UrlHelper.Action 包含不需要的附加参数

我在ControllerApplicationsController中有一个方法,我需要在其中获取操作方法的基本URL:publicActionResultMyAction(stringid){varurl=Url.Action("MyAction","Applications");...}问题是这包括当前路由数据中的stringid,当我需要没有URL时(该URL用于在基于URL的查找中从CMS获取内容)。我尝试将null和new{}作为routeValues参数传递,但没有成功。匹配的路由如下(在所有其他路由之上):routes.MapLowercaseRoute(name:"Ap

c# - 可以在此通用代码中避免使用 Delegate.DynamicInvoke 吗?

这个问题部分是关于委托(delegate)的,部分是关于泛型的。给定简化代码:internalsealedclassTypeDispatchProcessor{privatereadonlyDictionary_actionByType=newDictionary();publicvoidRegisterProcedure(Actionaction){_actionByType[typeof(T)]=action;}publicvoidProcessItem(objectitem){Delegateaction;if(_actionByType.TryGetValue(item.Get

c# - Action 链接 CS1026 : ) expected

每当我尝试使用ActionLink时都会出现上述错误?我才刚刚开始使用MVC,并不真正理解代码(如下)的问题所在:这似乎是一个解析问题,但它只在我运行页面时发生。该应用程序构建得非常好,所以我真的不明白,因为错误是编译错误?如果我去掉第25行,它将发生在下一行......CompilationErrorDescription:Anerroroccurredduringthecompilationofaresourcerequiredtoservicethisrequest.Pleasereviewthefollowingspecificerrordetailsandmodifyyour

c# - 为什么 Action/Func 比 .Net 中的常规方法更好?

如果我需要一段可快速重用的代码,我更喜欢使用Action或Func,但是我团队中的其他人不喜欢或不理解它们。目前我唯一真正的争论是关于偏好和更新的代码实践,但这些只是糟糕的争论。为什么这样做更好:ActionhideControl=(form,name)=>{varbutton=form.GetControl(name);if(button!=null)button.Visible=false;}比:publicstaticvoidHideControl(thisFormViewform,stringname)whereT:Control{varbutton=form.GetContr

c# - 使用 Func<>(或 Action<>)或创建自己的委托(delegate)?

哪个更好,比如说,方法中的参数类型(与LINQ无关)。显然Func更好,因为它更简单,更具描述性,如果每个人都在使用它,一切都会变得兼容(好)。但是我注意到Microsoft在某些库中使用了自己的委托(delegate),例如事件处理程序。那么,它们各自的优点和缺点是什么?我应该什么时候使用它?编辑:显然Func仅在3.5中可用,因此这可能是我看到非Func委托(delegate)的主要原因。还有其他不使用Func的原因吗?(例如:this来自.NET4)同样的问题也适用于Action 最佳答案 Func在非常清楚它们的用途并且输入

c# - Asp MVC Action 链接绝对 url

我有一组显示给特定用户的View。这些是我从我们应用中的其他View复制而来的View,并稍作更改。在这些View中,我使用的是Html.Action链接,但我需要这些链接返回绝对url而不是相对url。我知道有额外的参数可用于获得此效果,但我不认为更改我所有View中的所有链接是可行的。理想情况下,我想在一个地方进行更改,并根据需要呈现所有链接。当然必须有一些我可以设置的东西,或者我可以重写的函数来完成这个。 最佳答案 我写了一篇名为HowtobuildabsoluteactionURLsusingtheUrlHelperclas

c# - C# 中作为 Func 的操作

我有一个以Func作为参数的参数化方法SomeTypeSomeMethod(Funcf){...}我想传递一个Action而不必重载该方法。但这带来了问题,您如何将Action表示为Func?我试过了Func但它无效。 最佳答案 您可以创建一个扩展方法来包装一个Action并返回一个虚拟值:publicstaticclassActionExtensions{publicstaticFuncToFunc(thisActionact){returna=>{act(a);returndefault(T)/*ora*/;};}}Action

c# - 排队方法调用 - 知道怎么做吗?

我编写了一个高度异步的应用程序。我正在寻找一种对方法调用进行排队的方法,类似于BeginInvoke/EndInvoke所做的....但在我的OWN队列中。原因是我有自己的优化消息队列系统,使用线程池,但同时确保每个组件在请求中都是单线程的(即一个线程只处理一个组件的消息)。我有很多来回的消息。对于有限的使用,我真的很想能够只使用参数对消息调用进行排队,而不必为了进行大量管理调用而定义自己的参数、方法包装/解包。我也不总是想绕过队列,我绝对不希望发送服务等待其他服务响应。有人知道拦截方法调用的方法吗?为此使用TransparentProxy/VirtualProxy的某种方式?;)服务

c# - 如何使用 Task.Run(Action<T>)

我正在尝试创建一个接受TcpClient连接并在客户端连接后执行任务“ConnectedAction”的方法。我在尝试创建新任务以运行委托(delegate)“ConnectedAction”时收到编译错误。Argument1:cannotconvertfrom'void'to'System.Func'我相信这个错误是因为该方法正在尝试运行“ConnectedAction”方法并将void返回给Task.Run参数。如何让任务运行“ConnectedAction”委托(delegate)?classListener{publicIPEndPointListenerEndPoint{ge