草庐IT

A_factory_func

全部标签

c# - 为什么在通用序列创建器上使用 Func<> 比使用 new() 约束快得多

考虑以下代码...在我对Windows7x64PC(Inteli73GHz)上的RELEASE(不是调试!)x86构建的测试中,我获得了以下结果:CreateSequence()withnew()took00:00:00.9158071CreateSequence()withcreator()took00:00:00.1383482CreateSequence()withnew()took00:00:00.9198317CreateSequence()withcreator()took00:00:00.1372920CreateSequence()withnew()took00:00:

c# - 将 Func<T, String> 转换为 Func<T, bool>

我想我的思绪正在爆炸,试图弄清楚Funcs...如果这没有意义,我道歉,现在对我来说很有意义,但已经度过了漫长的一天......1)假设给你一个函数,它接受T并输出一个字符串:Func您能否将其转换为接受T并根据某种逻辑返回bool值的函数(在这种情况下,如果返回的字符串为空(String.IsNullOrWhiteSpace)?Func2)如果给你一个,你能做同样的事情吗Expression>并需要将其转换为Func根据返回的字符串是否为空(String.IsNullOrWhiteSpace)返回true/false?谢谢 最佳答案

c# - Task.Run 和 Task.Factory.StartNew 之间不同的异常处理

我在使用Task.Factory.StartNew并trycatch抛出的exception时遇到问题。在我的应用程序中,我有一个长时间运行的任务,我想将其封装在Task.Factory.StartNew(..,TaskCreationOptions.LongRunning);但是,当我使用Task.Factory.StartNew时,异常没有被捕获。然而,当我使用Task.Run时,它的工作方式与我预期的一样,我认为它只是Task.Factory.StartNew的包装器(根据例如thisMSDNarticle).此处提供了一个工作示例,不同之处在于使用Task.Run时将异常写入控

c# - 为任何方法创建 Func 或 Action(在 C# 中使用反射)

我的应用程序根据设置动态加载dll来自数据库(文件、类和方法名称)。为了促进、加快和减少反射的使用,我想要一个缓存....遵循使用的想法:MethodInfo.Invoke没有任何表现形式(ReflectionPerformance-CreateDelegate(PropertiesC#))我想翻译对方法的任何调用。我想到了一些可以像这样工作的东西:publicstaticTCreate(Typetype,stringmethodName)//orpublicstaticTCreate(MethodInfoinfo)//touselikethis:varaction=Create>(t

c# - 带有 CancellationTokenSource 的 Task.Factory.FromAsync

我有以下代码行用于从NetworkStream异步读取:intbytesRead=awaitTask.Factory.FromAsync(this.stream.BeginRead,this.stream.EndRead,buffer,0,buffer.Length,null);我想让它支持取消。我知道我可以canceltasksusingaCancellationTokenSource,但是我看不出有什么方法可以将它传递给TaskFactory.FromAsync().是否可以使FromAsync()构造的任务支持取消?编辑:我想取消一个已经在运行的任务。

C#:Func<> 而不是方法?

这个问题在这里已经有了答案:FuncDelegatevsFunction(6个答案)关闭9年前。这是给所有知情人士的好奇问题:使用Func而不是方法有任何危害/缺点吗?简单示例:privatestaticFunc>Foo=(i1,i2,dbc)=>(i1!=0)?dbc.Bar(i2):newList{/*somedefaultvalues...*/};对比privatestaticListFoo(inti1,inti2,DBContextdbc){returni1!=0?dbc.Bar(i2):newList{/*somedefaultvalues...*/};}

c# - 如何强制 Task.Factory.StartNew 进入后台线程?

我已经看到许多其他类似的问题,但没有在那里找到我的答案。我的问题是我正在使用以下流程创建线程:privatevoidbtn_Click(objectsender,EventArgse){service.GetCount((count,ex)=>{if(ex!=null)return;for(inti=0;icallback){varcallingThread=TaskScheduler.FromCurrentSynchronizationContext();Funcaction=()=>{returnclient.GetCount();//Synchronousmethod,could

C# 将 Func<T1, object> 转换为 Func<T1, T2>

我毫不怀疑这很容易做到,但我有一个函数创建器库,可以为我创建以下形式的lambda函数:Func我希望更具体地指定out参数-基本上,我希望能够按照以下方式创建一些东西:privateFuncGetFunc(stringexpression){FuncobjFunc=CreateFunction(expression));returnobjFuncasFunc;}但是,当我尝试这个时,我得到了一个null(顺便说一句,如果我返回objFunc作为Func它不是空的,所以我知道那不是我的问题所在)。如何正确执行此操作? 最佳答案 尝试

c# - autofac 的 Func<T> 解析命名服务

给定注册服务:builder.RegisterType().Named("one").As();builder.RegisterType().Named("two").As();builder.RegisterType().Named("three").As();我可以检索IFoo的命名实现吗?通过注入(inject)类似Func的界面?publicclassSomeClass(Funcfoo){varf=foo("one");Debug.Assert(fisFoo1);varg=foo("two");Debug.Assert(gisFoo2);varh=foo("three");De

c# - 在应用依赖注入(inject)时,Func<in T, out TResult> 是否适合用作 ctor arg?

例子:publicclassBusinessTransactionFactorywhereT:IBusinessTransaction{readonlyFunc_createTransaction;publicBusinessTransactionFactory(FunccreateTransaction){_createTransaction=createTransaction;}publicTCreate(){return(T)_createTransaction(typeof(T));}}使用相同的容器设置代码:publicclassDependencyRegistration: