草庐IT

c# - 在 F# 中正确等待返回类型为 Task<T> 的异步 C# 方法

我希望能够从F#使用C#库。大多数情况下,这非常简单。但是,如果我尝试调用返回Task的函数我无法获得返回值。所以,我有具有以下定义的C#方法:publicasyncTaskReadEventAsync(stringstreamName,intposition)whereTEvent:class我正在尝试使用F#中的这个方法,如下所示:letreadEventFromEventStore(eventStore:IEventStoreRepository)(streamName:string)(position:int)=async{returneventStore.ReadEventA

c# - Lazy<T> 如何解决需要 new() 约束的问题?

示例1(不编译):voidMain(){varc=newC();c.M.F();}classC{T_m=null;publicTM{get{if(_m==null)_m=newT();return_m;}}}classD{publicvoidF(){Console.WriteLine("iwascreated");}}结果:Cannotcreateaninstanceofthevariabletype'T'becauseitdoesnothavethenew()constraint示例2(有效):voidMain(){varc=newC();c.M.F();}classC{Lazy_m

c# - "///<exclude/>"是什么意思?

我继承了一堆C#代码。对于几个方法定义,我找到了///作为它前面唯一的XMLDoc。我试图用谷歌搜索它的含义,但没有成功。有人可以解释一下这可能意味着什么吗? 最佳答案 在NDoc至少,这意味着应该排除该成员的XML文档。来自documentation:ThetagdirectsNDoctoexcludethecurrentitemfromdocumentation.我不清楚这是否最初是特定于NDoc的,但它似乎也受到SandcaSTLe的支持(因为它在SandcastleXMLcommentsguide中)。

c# - AsyncLocal<T> 在非异步/等待代码中有什么作用?

我正在处理一个非常大且旧的桌面winform应用程序代码库。在此代码库中,有很多操作在后台线程中执行,主要使用BackgroundWorker。.此代码库中的一个常见模式是通过将工件绑定(bind)到正在执行的线程来隐藏复杂性。例如,数据库连接和事务存储在[ThreadStatic]中字段。我正在尝试改变这一点,并开始使用async/await代码,并受益于在池的任何线程中运行任务,并通过使用ConfigureAwait(false)允许任务在任何其他线程中继续执行.我知道[ThreadStatic]不适合async/await,我在这里阅读了几个建议使用AsyncLocal的答案相反

c# - 如何序列化 IList<T>?

我有一个返回IList的OR映射器(iBatis.Net)。//IListQueryForList(stringstatementName,objectparameterObject);vardata=mapper.QueryForList(statement,parameters);我正在尝试在网络服务中使用它并希望以1:1的比例返回数据。当然,我不能在WebMethod中返回IList,因为它是一个接口(interface),因此不可序列化。我发现映射器实际上返回的是一个列表。但我不敢将其转换为List,因为映射器的内部工作原理在未来的版本中可能会发生变化(而且感觉很脏)。我也应该

c# - 我在理解 IQueryable<T> 时遇到问题

所以我试图理解IQueryable.我正在阅读的教程建议使用它,但不确定为什么。该代码仅使用LINQtoSQL返回一些值。我过去做过很多次,但没有使用IQueryable为什么要将它与返回超过1个值的函数一起使用?这是我的代码:publicIQueryableGetItems(){returnfromitemindb.Itemswhereitem.IsActive==trueorderbyitem.ItemNumberselectitem;} 最佳答案 IQueryable将查询表示为表达式树,而不在服务器上对它求值。这使您可以在实

c# - 需要重载 operator< 和 null 检查

我在C#中重载了lessthan运算符,我想知道这是否需要检查null。您可以在下面找到一个示例:publicstaticbooloperator或者这是正确的:publicstaticbooloperator我没有找到任何关于此的说明。但也许我错过了什么。 最佳答案 答案取决于您的预期使用模式。如果您计划混合使用空值,并且您希望null值小于非空值,那么您的实现是正确的;如果您想将null值视为大于非null对象,则注释掉的返回值(false和true)应该被使用。如果您不打算在混合中允许空值,则抛出ArgumentNullExc

c# - 为什么使用 async 并等待 Task<>?

如果我有一个普通的方法,我想使其异步:publicintFoo(){}我会这样做:publicTaskFooAsync(){returnTask.Run(()=>Foo());}我为什么要这样做:publicasyncTaskFooAsync(){returnawaitTask.Run(()=>Foo());}我打算使用它的方式是:FooAsync().ContinueWith((res)=>{});我希望该方法不间断地运行,但我希望触发回调之类的东西,因此ContinueWith。但是对于第二个版本,使用它有什么意义吗? 最佳答案

c# - EF Code First 不为 ICollection<string> 生成表

我想要我的一个数据类中的以下ICollection属性(我们称它为“Foo”)publicclassFoo{[Key]publicintFooId{get;set;}publicstringSomeValueOrOther{get;set;}publicvirtualICollectionAllowedBars{get;set;}}我可以在使用实体上下文时添加字符串值,但它们不会“去任何地方”。换句话说,不会生成表示此关系的表,因此不会保存任何值。我期望的是一个包含两列的表,一列用于“FooId”,一列用于“AllowedBar”,EF会自动将其映射到集合(就像它在复杂类型中所做的那样

c# - 保留一个 Dictionary<Type, MyClass<T>> ,其中元素可以按类型引用

我有一个名为EntityTypeTransform的抽象类,它有一个抽象方法,用于保存将IDataRecord转换为T实例的Func委托(delegate)。publicabstractclassEntityTypeTransformwhereTEntityType:class{publicabstractFuncGetDataTransform();}该类的实现可能看起来像(看起来像):publicclassTaskParameterEntityTypeTransform:EntityTypeTransform{publicoverrideFuncGetDataTransform()