草庐IT

c# - 如何定义接受任何生成 IEnumerable<T> 的任务的函数?

我正在寻找一个函数来接受任何产生IEnumerable的任务.为了说明,请考虑以下函数签名。voidDoWork(Task>task){}现在,我想按如下方式调用此方法:Tasktask=Task.FromResult(new[]{1,2,3});DoWork(task);显然,这行不通,因为两个Task类型不相同,并且任务不存在协方差。但是,我想知道是否有一些聪明的技巧可以让它发挥作用,灵感来自以下示例。asyncTask>GetTask(){returnawaitTask.FromResult(newint[]{1,2,3});}在这里,await正在使用内联任务的结果有效地创建一

c# - List<Task> - 使用 C# Entity Framework 的 UPSERT 数据库记录

我有一个Employee对象,我正在尝试使用单个DB实体上下文使用多个任务(并行执行)来更新记录(即更新/删除)。但是我收到以下异常Message="Objectreferencenotsettoaninstanceofanobject."考虑以下DTOpublicclassEmployee{publicintEmployeeId{get;set;}publicstringFirstName{get;set;}publicstringLastName{get;set;}publicListContactPhoneNumbers{get;set;}publicListContactEma

C# - 将 Nullable<T> 公开给 COM 的好方法

我们正在努力向COM公开程序集。除其他事项外,我们经常使用可空值,例如long?、DateTime?等。这些是通用类型,不能向COM公开。什么是COM的这些数据类型的良好替代品?我们尝试了以下方法://OriginalCustomerIDpropertyinclasspubliclong?CustomerID{get;set;}//ExplicitCOMinterfacelongIComInterface.CustomerID{get{returnCustomerID.GetValueOrDefault();}set{CustomerID=value;}}问题是,我们需要一种通过COM

c# - 为什么 (double)0.6f > (double)(6/10f)?

这是我电脑上发生的事情:(double)(float)0.6=0.60000002384185791(double)0.6f=0.60000002384185791(double)(6/10f)=0.6(double)(float)(6/10f)=0.66/10f也是个float,怎么能精确到0.6呢?在我看来(double)(6/10f)也应该是0.60000002384185791。有人可以帮忙解释一下吗?谢谢! 最佳答案 首先,重要的是要记住0.6不能准确地表示为float但它可以准确地表示为double(浮点运算的不准确性已

c# - 带有过期时间的 Lazy<T>

我想在惰性对象上实现过期时间。过期冷却时间必须从第一次检索值开始。如果我们得到该值,并且过期时间已过,那么我们重新执行该函数并重置过期时间。我不熟悉扩展、部分关键字,我不知道最好的方法。谢谢编辑:到目前为止的代码:新编辑:新代码:publicclassLazyWithExpiration{privatevolatileboolexpired;privateTimeSpanexpirationTime;privateFuncfunc;privateLazylazyObject;publicLazyWithExpiration(Funcfunc,TimeSpanexpirationTime

c# - `ReadAsAsync<string>` 和 `ReadAsStringAsync` 应该用来做什么?

应该做什么HttpContentExtensions.ReadAsAsync和HttpContent.ReadAsStringAsync用来做什么?他们似乎在做类似的事情,但工作方式却很奇怪。下面是几个测试及其输出。在某些情况下JsonReaderException被抛出,在某些情况下,输出JSON但带有额外的转义字符。我最终在我的代码库中同时使用了这两个函数,但如果我能理解它们应该如何工作,我希望能在其中一个上保持一致。//CreatedataandserialisetoJSONvardata=new{message="helloworld"};stringdataAsJson=Js

C# 单元测试 - 生成模拟 DataContexts/LINQ -> SQL 类

我热爱C#的新世界,我的玩具程序已经到了我想开始编写一些单元测试的地步。我的代码当前通过DatabaseDataContext对象(*.dbml文件)使用数据库,为此对象创建模拟的最佳方法是什么?考虑到生成数据库LINQ->SQL代码是多么容易以及这一定是一个多么普遍的请求,我希望VS2010内置了有助于测试的功能。如果我偏离了方向并且必须手动完成此操作,您能否告诉我您的首选方法?非常感谢,加文 最佳答案 DataContext的问题在于它不是为模拟而设计的。模拟不可模拟对象的免费工具是MolesfromPex(Pexmoles?)

c# - 哪个更好 : delegate {} or () => {}

我今天想知道在需要空函数的情况下是否有任何理由更喜欢使用委托(delegate){}而不是()=>{}。你知道有什么理由比另一个更喜欢吗? 最佳答案 它们不是一回事。由于delegate{}不提供参数列表,它canbeconverted返回void并接受任意数量的参数(ref和out参数除外)的委托(delegate)。这与()=>{}不同,它被明确声明为不带参数。 关于c#-哪个更好:delegate{}or()=>{},我们在StackOverflow上找到一个类似的问题:

c# - 比较委托(delegate) Action<T>

请随意质疑我的理智。我需要确定一个Action对比Action是原始实例。我拥有的是一个带有类变量的类protectedActionMessageCallback=null;当我的abstractclassMessage是通过抽象方法创建的,我强制“他们”初始化MessageCallBack。此MessageCallback被添加到IList>.此列表中定义的每个操作都可以不同。现在,我想要做的是从列表中删除一个特定的操作,但我尝试比较它时失败了。以下是我最后一次尝试设置的示例:publicvoidUnsubscribe(ActionmessageCallback){varmessag

c# - 将 IEnumerable<T> 转换为用户类型的更好方法

我有一个自定义集合类型,定义如下:publicabstractclassRigCollectionBase:Collection,IEnumerable,INotifyPropertyChanged,IBindingList,ICancelAddNewwhereT:BusinessObjectBase,new()注意:这是基类,有20个左右的子类是这样实现的:publicclassMyCollection:RigCollectionBase我们在代码中使用了很多Linq,您可能知道,Linq函数返回IEnumerable.我正在寻找的是返回到MyCollection的简单方法。来自IE