Tag: 映射

如何将匿名类型转换为已知类型

我有一个匿名类型变量。 这个变量来自另一个函数,我们无法改变它。 // var a {property1 = “abc”; property2 = “def”} 我上课了: class Myclass{ string property1; string property2; } 如何将变量a转换为Myclass类型。 我试过了 Myclass b = (Myclass)a; 但它不起作用。 如果我初始化: Myclass b = new Myclass{ property1 = a.property1, property2 = a.property2, } 它工作正常,但需要大量代码,因为MyClass有很多属性 谁能帮我? 谢谢你的回答。

JSON:c#中的java Map等价物是什么

我面临的问题是使用JSON将对象传递给C#并且C#将字符串传递回Java,然后java将其反序列化为Map BTW,.net版本为3.5 这是问题所在 java map JSON字符串采用以下格式: {“key1″:”value1″,”key2″:”value2”} 但在C#中,字典被封为 [{“Key”:”key1″,”Value”:”value1″},{“Key”:”key2″,”Value”:”value2″}] 我只是想找到一种方法来做到这一点: 对于java Map JSON格式,C#可以对其进行解除分类 对于C#,找到一种方法将其seledize为java可理解的格式 谢谢

当对象属性和字典键名不同时,如何将对象/类属性映射到字典?

我正在调用Bloomberg Server API(用于股票市场数据)并将数据恢复到Dictionary其中字典的Key是Bloomberg一侧的Field Name ,该对象包含来自Bloomberg的数据值,可以是string , decimal , DateTime , boolean等。 获得Bloomberg数据后,我需要使用返回的值填充强类型实体/类。 根据我在对bloomberg的请求中发送的字段名称,返回的字典可以具有不同的键值。 我遇到的问题是, bloomberg字段名称和我的.net实体的属性名称不匹配 ,所以我不确定我是否可以使用AutoMapper或类似的库进行此映射。 我也尝试使用Tuple ,其中第一个元组项是bloomberg字段名,第二个元组项是我的实体的属性名,第三个元组项是从bloomberg返回的数据值。 这也没有成功(到目前为止),所以我想知道是否有一种简单的直接方式来维护这个bloombergfield EntityProperty映射并使用相应字段的Bloomberg数据值填充实体的值。 Generic(即使用C#Generics)解决方案会更好! 我已粘贴下面的示例控制台应用程序代码,因此您可以将其粘贴并试用。 2个字典,1个用于stockdata ,其他用于bonddata有假数据,但你明白了。 我还在下面添加了评论来重新迭代我想要完成的任务。 谢谢!! namespace MapBBFieldsToEntityProperties { using System; using System.Collections.Generic; class Program { public class StockDataResult { public string Name { get; set; } public decimal LastPrice { get; set; } public […]

MappingException Edm.String与SqlServer.varbinary不兼容

我很难解决一个愚蠢的映射问题。 基本上发生了什么是我在sql db表中有一个字段,它是一个varbinary用于安全性(加密和解密)。 所有这些东西都很好,但看起来似乎edmx将该表中的字段视为一个字符串,我认为它应该看作是数据只是一个二进制字符串。 这是我收到的错误消息。 Schema specified is not valid. Errors: ReadModel.Model.msl(836,12): error 2019: Member Mapping specified is not valid. The type ‘Edm.String [Nullable=True,DefaultValue=,MaxLength=256,Unicode=,FixedLength=False]’ of member ‘field-in-question’ in type ‘Lib.ReadModel.TableName’ is not compatable with ‘SqlServer.varbinary’ [Nullable=True,DefaultValue=,MaxLength=256,FixedLength=False]’ of member ‘field-in-question’ in type ‘Model.Store.TableName’. 有没有人有这样的问题? 也许我有一些东西可以忽略? 也许能够指出我正确的方向? 我在寻找解决问题的信息方面存在问题而且处于亏损状态。

当前类型是一个接口,无法构造。 你错过了类型映射吗?

我有一个控制器类,它负责双击命令,然后调用一个弹出窗口给用户的方法。 就像是 : var popup = container.GetService(); 在上面的行中,它抛出一个错误:当前类型PopupCommand.IPopupDataHandler是一个接口,无法构造。 你错过了类型映射吗? 我更新了包含container.GetService()方法的DLL,之前它曾经工作正常。 我尝试在谷歌搜索,但类似的问题与Unity更相关,我怀疑我的问题是否与Unity有关。

C#AutoMapper基于目标值的条件映射

请问任何人都可以建议如何在AutoMapper中使用条件映射来根据现有的TARGET属性值从SOURCE对象映射TARGET对象中的值? 所以我的源类是: public class UserDetails { public String Nickname { get; set; } } 我的目标类是: public class ProfileViewModel { public Boolean NicknameIsVisible { get; set; public String Nickname { get; set; } } 我想在TARGET中设置“Nickname”属性值以匹配SOURCE中的“Nickname”属性值,前提是目标属性“NicknameIsVisible”值已经设置为TRUE,否则我想设置TARGET“Nickname”属性值为空字符串。 我正在尝试这样的东西(不会编译)…… Mapper.CreateMap() .ForMember( destination => destination.Nickname, option => option. .MapFrom( source => source.NicknameIsVisible ? source.Nickname : String.Empty) ); 但是“NicknameIsVisible”不是我的SOURCE的属性,而是我的TARGET的属性。 顺便说一下,我的ProfileViewModel使用Owain Wragg的方法( […]

如何将XML文件内容映射到C#对象

我是C#的新手,我正在尝试读取XML文件并将其内容传输到C#对象。 例如,一个示例XML文件可能是: Person 1 21 Person 2 22 ..可以映射到一个名为’Person’的C#类数组: Person[] people; Person对象可以包含以下字段: string name; uint age;

如何在iBatis中映射List ?

我有这样的课 public SomeClass { private List _strings = new List(); public IEnumerable Strings { { get return _strings; } } } 我如何为_strings做映射? 我试过这个,但它抱怨List typehandler没有被找到,如果我将它作为一个对象映射它就不会抱怨。 所以我搜索谷歌并发现了这个解决方法(最初是针对Java问题,不知道它是否可以在C#中工作) 这至少让测试运行,它返回我的对象​​的其余部分,并且我的列表具有正确的条目数,除了它们都是空白的。 我认为问题是属性属性是空白的,但我不确定是什么意思去那里。 (我也试过使用’价值’,但这也不起作用)。 这似乎应该更简单,我只是忽略了一些明显的东西。 谢谢。

从架构上讲,我应该如何用更易于管理的东西替换一个非常大的switch语句?

编辑1:忘记添加嵌套属性曲线球。 更新:我选择了@ mtazva的答案,因为这是我特定案例的首选解决方案。 回想起来,我用一个非常具体的例子问了一个普遍的问题,我认为这最终会使每个人(或者也许只是我)混淆这个问题究竟是什么。 我相信一般性问题也得到了回答(参见战略模式答案和链接)。 感谢大家! 很大的开关语句显然有气味 ,我已经看到了一些关于如何使用映射到函数的字典来实现这一点的链接。 但我想知道是否有更好的(或更聪明的方法)来做到这一点? 在某种程度上,这是一个我总是在脑后滚动的问题,但从来没有真正有一个很好的解决方案。 这个问题源于我之前提到的另一个问题: 如何使用C#在.Net中的类型对象列表中选择对象属性的所有值 这是我正在使用的示例类(来自外部源): public class NestedGameInfoObject { public string NestedName { get; set; } public int NestedIntValue { get; set; } public decimal NestedDecimalValue { get; set; } } public class GameInfo { public int UserId { get; set; } public int MatchesWon { get; […]

用于双向映射的简单约定自动映射(来自/来自ViewModels的实体)

更新:这个东西已经演变成一个很好的项目,请访问http://valueinjecter.codeplex.com 检查一下,我刚写了一个简单的自动播放器,它从属性中获取具有相同名称和类型的一个对象的值并将其放入另一个对象中,并且可以为您可能需要的每种类型添加exception(ifs,switch) 那么告诉我你怎么看? 我这样做了所以我可以这样做: Product –> ProductDTO ProductDTO –> Product 它是如何开始的: 我在Dropsow的Inputs / Dto / ViewModels中使用“object”类型,因为我向html发送了一个IEnumerable ,我收到一个选定键的字符串数组 public void Map(object a, object b) { var pp = a.GetType().GetProperties(); foreach (var pa in pp) { var value = pa.GetValue(a, null); // property with the same name in b var pb = b.GetType().GetProperty(pa.Name); if (pb == null) […]