草庐IT

c# - AutoMapper 如何根据上下文以不同方式将对象 A 映射到对象 B

召集所有AutoMapper专家!我希望能够根据运行时的上下文以不同方式将对象A映射到对象B。特别是,我想在一种映射情况下忽略某些属性,而在另一种情况下映射所有属性。我遇到的是Mapper.CreateMap可以在不同的映射情况下成功调用,但是,一旦调用CreateMap,就会设置特定类型对的映射,并且随后不会通过成功的CreateMap调用进行更改,这可能以不同方式描述映射。我发现一篇博文提倡Mapper.Reset()来解决这个问题,但是,Mapper类的静态性质意味着碰撞和崩溃发生只是时间问题。有办法吗?我认为我需要为每个应用程序域调用一次Mapper.CreateMap,然后能

c# - 将对象转换为 IEnumerable<T>,其中 T 未知

我正在尝试使用Reflection并遇到以下情况。在下面的代码中,我们假设“obj”的类型可以是IEnumerable或ICollection或IList.我想将此System.Object转换为IEnumerable总是(因为ICollection和IList继承自IEnumerable无论如何),所以我想枚举集合并使用反射来编写单个项目。这背后的动机是我只是想看看一般情况下,序列化程序是否会序列化数据,因此我正在尝试模拟这种情况,希望也能理解反射。我考虑过将对象强制转换为非通用IEnumerable,但认为这会导致不必要的对象装箱,比如IEnumerable的实际实例。...我的想

c# - 将对象数组的对象数组转换为对象的二维数组

我有一个第三方库返回一个对象数组的对象数组,我可以将其填充到一个对象[]中:object[]arr=myLib.GetData(...);结果数组由object[]条目组成,因此您可以将返回值视为某种记录集,外部数组表示行,内部数组包含字段值,其中某些字段可能未填充(a锯齿状阵列)。要访问我必须强制转换的各个字段:inti=(int)((object[])arr[row])[col];//accessafieldcontaininganint现在我很懒,我想像这样访问元素:inti=(int)arr[row][col];为此,我使用以下Linq查询:object[]result=myL

c# - 如何将对象列表作为 IHttpActionResult 返回?

我是ASP.NETwebapi的新手,我找不到返回按id查询的对象列表的方法。这是我的GET请求的Controller方法。我想返回所有具有通过url传递的指定questionnaireId的问题。我试过这个://GET:api/Questions/5[ResponseType(typeof(List))]publicTaskGetQuestion(intquestionnaireId){varquestions=fromqindb.Questionswhereq.QuestionnaireId==questionnaireIdselectnewQuestion(){Id=q.Id,I

c# - 剪贴板 将对象复制到和从中复制

我正在尝试将一个对象复制到Windows剪贴板上,然后再次关闭。我的代码是这样的:复制到剪贴板:Clipboard.Clear();DataObjectnewObject=newDataObject(prompts);newObject.SetData(myString);Clipboard.SetDataObject(newObject);在哪里prompts是List收藏。复制剪贴板:IDataObjectdataObject=System.Windows.Forms.Clipboard.GetDataObject();if(dataObject.GetDataPresent(ty

c# - 如何将对象列表存储到 ViewState

我有一个List类型的列表.我想将它存储在ViewState中。如何做到这一点?privateListJobSeekersList{get;set;} 最佳答案 基本上你只需要使用get,然后你要么从View状态获取发布的数据,要么在View状态上第一次设置它。这是更健壮的代码,可以避免对每次调用进行所有检查(是否设置View状态、是否存在等),并直接保存和使用View状态对象。//usingthisconstyouavoidbugsinmispellingthecorrectkey.conststringcJobSeekerNam

c# - 将对象数组转换为连接的字符串

如果我有:List汽车在哪里:publicclassCar{publicintYear;publicstringName;}我想获取这个数组并通过“,”创建一个连接的字符串所以它会返回:"Toyota,Ford,Chevy"我可以像这样手动完成:privatestaticstringCreateConcatenatedList(Listparts_){StringBuilderb=newStringBuilder();foreach(Carbpinparts_){b.Append(bp.Name+",");}b.Remove(b.Length-2,2);returnb.ToString

c# - 将对象绑定(bind)到 Web API 端点时指定自定义属性名称

我有一个.NetCoreWebAPI。当模型属性与请求正文匹配时,它会自动映射模型。例如,如果你有这个类:publicclassPackage{publicstringCarrier{get;set;}publicstringTrackingNumber{get;set;}}如果请求正文是以下JSON,它会正确地将它绑定(bind)到POST端点:{carrier:"fedex",trackingNumber:"123123123"}我需要做的是指定要映射的自定义属性。例如,使用上面的相同类,如果TrackingNumber作为tracking_number出现,我需要能够映射到JSO

c# - 将对象转换为对象的单项数组 (C#)

有些函数只接受数组作为参数,但你想为它们分配一个对象。例如,要为DataTable分配一个主键列,我这样做:DataColumn[]time=newDataColumn[1];time[0]=timeslots.Columns["time"];timeslots.PrimaryKey=time;这看起来很麻烦,所以基本上我只需要将DataColumn转换为DataColumn[1]array。有更简单的方法吗? 最佳答案 您可以使用数组初始化语法编写它:timeslots.PrimaryKey=new[]{timeslots.Col

c# - 将对象列表转换为接口(interface)列表

如果我有实现ISomeInterface的objectA为什么我不能这样做:Listlist=(somelistofobjectAs...)ListinterfaceList=newList(list);为什么我不能将列表插入到interfaceList构造函数中?有什么解决方法吗? 最佳答案 在C#3.0+.Net3.5及更高版本中,您可以通过执行以下操作来解决此问题ListinterfaceList=newList(list.Cast());这不起作用的原因是List的构造函数在这种情况下需要IEnumerable.列表变量的类