将POCO映射到具有属性的对象[]

本文关键字:对象 属性 POCO 映射 | 更新日期: 2023-09-27 17:49:55

我有3个类,其中我可以控制[Machine - my POCO]。2类是第三方;Item和ItemValue(从Item派生)。Item有一个属性UniqueIdentifier

我有一个服务器,它需要Item[]元素传递给它,这些元素由服务器更新。服务器有一个更改事件,我收到一个带有参数ItemValue[]项的回调。哪些项目可以包含任何更改-包括不在我的POCO中的项目。我需要轻松地映射属性ItemValue。值设置为POCO属性,因此我可以设置POCO的值。我正在使用POCO来更新数据库,并绑定到UI,我已经实现了INotifyPropertyChanged

少。属性= ItemValue[index]。我需要确保这个实际对象对应于POCO。地产)(在某种程度上,我需要能说POCO。属性属于ItemValue[index]。UniqueID,我不想做迭代的嵌套循环,当我创建Item[]时,我确实可以控制UniqueID,越快越好,我正在考虑使用某种字典来映射它,但我不确定究竟如何用示例或在哪里实现它,我的Poco或中间类..

如果可能的话,我想要做所有这些,如果可能的话,所以也许我需要一个像Mapper这样的中介我想我可以用它来创建我的物品Item[]对于T的每个属性,CreateItem => Item,分配UniqueIdentifier, assignTargetAddress, DataType添加到…的字典中

我看过:

将POCO映射到实体框架中的实体

为映射x,y单元格的POCO属性添加属性答案是:一个更具描述性的类模型——这意味着我所有的poco都需要这样的东西来处理float, bool, string, int等,这也使得它的硬编码不那么通用。-我需要为每个数据类型做一个类,然后在我所有的poco更改中使用该类和UI绑定,以及数据库更新,我需要获得这些值。

:http://blogs.msdn.com/b/alexj/archive/2009/06/19/tip-26-how-to-avoid-database-queries-using-stub-entities.aspx似乎更多的是一种数据库方法,我的对象回来了,我不知道有多少或什么对象返回,只是他们有一个唯一的id对应于我创建并传递给服务器的项目。我需要某种方法使用那个UniqueID将属性映射回POCO。这里看起来类似于我正在寻找,我猜,但我只是不确定它或如何转换-我不希望一切转换为字符串-也许我看这个错误。c#用户定义的CSV到POCO的映射

任何帮助都是感激的,因为我比大师更nubish。

public List<Machine> Machines;
public List<Item> MachineItems;
public class Machine : IMachine
{
 [DataMember]
 double SensorA {get; set;}
 [DataMember]
 double SensorB {get; set;}
 [DataMember]
 string Sytem1 {get; set;}
}
public class ItemValue : Item
{
 object value;
}
public class Item
{
 object clientID;
 string targetAddress;
 System.Type sysType;
}
OnNewlyReadValues(ItemValue[] itemValues)
{
   // each itemValue in itemValues represents a property
   // in the POCO .
   // itemValues May contain one itemValue or all itemValue
   // that represent the values in the POCO.
   // Determine if itemValue is for which Machine.PropertyName
   // property SensorA  (or any of the properties)
   // Machine.Property = itemValue.Value;
}

将POCO映射到具有属性的对象[]

我找到了codeproject上提供给我的答案:使用带有操作的字典将使我能够跟踪条目以及它所属的属性,通过clientID

public Dictionary<object, Action<machine,object>> setters
 = new Dictionary<object, Action<machine,object>>();

我的clientID是一个Guid。PropertyName所以现在我可以很容易地匹配机器(Guid)。地产